Files
mp-silma-ai-aide/manifest.llm.json
T
2026-07-21 07:25:45 -05:00

163 lines
8.7 KiB
JSON

{
"schema_version": "1.0",
"name": "mp-silma-ai-aide",
"description": "A Vite and TypeScript Chrome extension side panel for Gitea-backed Silma AI aide workflows.",
"project_type": "chrome-extension",
"language": "typescript",
"package_manager": "npm",
"deployable_output": {
"path": "dist/",
"type": "chrome-extension",
"description": "Build output is self-contained and can be loaded directly as an unpacked Chrome extension."
},
"entrypoints": {
"side_panel_html": "index.html",
"side_panel_script": "src/main.ts",
"background_service_worker": "src/background.ts",
"state_store": "src/store.ts",
"api_client": "src/api.ts",
"local_context_types": "src/localContext.ts",
"vite_config": "vite.config.ts",
"extension_icons": "public/icons/",
"local_context": "public/local-context.json",
"local_context_generator": "scripts/generate-local-context.mjs",
"generated_manifest": "dist/manifest.json"
},
"ui": {
"shell": "Chrome side panel",
"menu_items": [
{
"name": "Add URL",
"enabled": "when active tab base URL is not already known"
},
{
"name": "URLs",
"enabled": true
},
{
"name": "Gitea Repos",
"enabled": true
},
{
"name": "Issues",
"enabled": true
},
{
"name": "Add Issue",
"enabled": "when active tab base URL is known and linked to a Gitea repo"
},
{
"name": "Agents",
"enabled": true
},
{
"name": "Prompts",
"enabled": true,
"position": "right of Agents"
},
{
"name": "Workspaces",
"enabled": true,
"position": "right of Prompts"
}
],
"repo_ordering": "Gitea repos are ordered by latest default-branch commit timestamp.",
"agents_behavior": "The Agents view manages persisted agent files. The initial agent is GLOBAL AGENT backed by AGENTS.md, and agent markdown supports {{git}}, {{repo}}, {{workspace}}, {{url}}, {{baseUrl}}, {{profile}}, and {{issue}} template variables. The default global agent tells downstream agents to close the Gitea issue after pushing the implementation and to leave a Gitea issue comment when delivery is blocked, partial, or risky; persisted built-in global agents should pick up these required completion rules without replacing unrelated custom text.",
"prompts_behavior": "The Prompts view manages workspace-scoped prompt records persisted in chrome.storage.local under silmaAide.prompts. Each prompt has a name, workspace path, and content. New prompt workspace selection defaults to the active known URL's workspace/site when available. Add Issue shows prompts matching the active known URL's workspace path immediately above Content, and selecting one copies prompt content into the editable Content field for human adjustment.",
"workspaces_behavior": "The Workspaces view combines generated workspace_Father entries with user-added absolute local paths persisted in chrome.storage.local under silmaAide.userWorkspaces. User-added workspaces can be deleted from the side panel.",
"add_url_behavior": "The user must pick either a workspace or a Gitea repo. The app infers the linked counterpart from generated and user-added workspace context and stores the URL link in chrome.storage.local.",
"delete_url_behavior": "URLs can be deleted from the list. User-added URLs are removed from chrome.storage.local; generated known URLs are hidden by storing their base URL in silmaAide.deletedUrlBases.",
"add_issue_behavior": "The form shows the target repo and active URL for the active known URL, lets the user select a workspace prompt, agent file, and issue labels, captures visible-tab screenshots with thumbnails, accepts accumulated file attachments, creates a Gitea issue with the selected labels, and uploads the rendered agent file plus all screenshots/files as issue assets. Label options are Change Request, Idea, Tabitha, Orson, Belisarius, Ozymandias, and Ready; new issues default to Change Request. Captured screenshots can be expanded, removed, or cropped with a wider no-horizontal-scroll draggable/resizable crop panel. Issue bodies put human-entered idea/change request content under # Requirements and generated metadata under # References, including Chrome profile: Silma and the selected agent. The view intentionally omits the redundant Add Issue header copy.",
"open_issues_behavior": "Issues lists recent issues ordered by creation time. The Only current repo checkbox defaults to true and limits rows to the active URL's linked Gitea repo; disabling it loads recent issues from all repos already loaded by the extension. Status filtering uses Open and Closed checkboxes as a multiselect with Open checked by default. Label filtering defaults to empty and filters visible rows by a selected known label.",
"issue_comment_behavior": "Issues owns existing issue follow-up. Selecting an issue shows a direct Open in Gitea link, a placeholder Send to Codex button that logs the selected issue payload, editable issue subject/content/label fields that save against the selected issue repo with Gitea content-version readback verification and through Gitea's issue labels endpoint, issue attachments, direct attachment upload controls, comment chain, and a comment form that accepts text, screenshots, and file attachments, uploads attachments as issue assets, and submits a Gitea issue comment with attachment links. Clicking the selected issue row again or the detail close control collapses the detail panel. Existing issue attachments can be deleted, and additional selected-issue screenshots/files can be uploaded directly as issue assets without creating a comment. Issue rows can delete the issue after confirmation. Draft text-entry updates must not blur focused Add Issue, selected issue edit, Issues comment, Agents editor controls, Prompts editor controls, or Workspaces editor controls.",
"gitea_error_behavior": "Gitea API failures should include the failed operation. Network-level failures identify the configured Gitea API base URL and point to checks for VITE_GITEA_BASE_URL, Chrome extension host permissions, network/VPN access, token scope, and attachment size.",
"known_urls": [
{
"url": "http://100.66.226.22:23030/",
"workspace": "/Users/Tabitha/.openclaw/workspace_Father/workspace_Data",
"gitea_repo": "jacob-mathison/home-grown-llm-data"
}
]
},
"documentation": {
"agent_instructions": "AGENTS.md",
"llm_summary": "llm.txt",
"readme": "README.md",
"extension_management": "docs/extension-management.md"
},
"extension_management": {
"chrome_profile": "Silma",
"forbidden_profiles": ["Profile 1"],
"codex_chrome_extension_required": true,
"load_unpacked_path": "dist/",
"instructions": "Use the Codex Chrome extension with the Chrome profile named Silma. Do not use Profile 1."
},
"extension_permissions": [
"activeTab",
"sidePanel",
"storage",
"tabs"
],
"extension_host_permissions": [
"<all_urls>",
"Gitea host derived from VITE_GITEA_BASE_URL"
],
"commands": {
"install": "npm ci",
"codex_setup": "npm run codex:setup",
"dev": "npm run dev",
"codex_dev": "npm run dev:codex",
"build": "npm run build",
"codex_build": "npm run build:codex",
"preview": "npm run preview",
"verify_dist": "npm run verify:dist"
},
"environment": {
"example_file": ".env.example",
"local_file": ".env.local",
"variables": [
{
"name": "VITE_GITEA_BASE_URL",
"required": true,
"secret": false,
"description": "Base URL for the Gitea instance."
},
{
"name": "VITE_GITEA_TOKEN",
"required": true,
"secret": true,
"description": "Gitea API token used by the side panel client."
},
{
"name": "VITE_GITEA_REPO_OWNER",
"required": true,
"secret": false,
"description": "Owner for the target Gitea repository."
},
{
"name": "VITE_GITEA_REPO_NAME",
"required": true,
"secret": false,
"description": "Name of the target Gitea repository."
}
]
},
"generated_paths": [
"dist/",
"node_modules/"
],
"gitea_workflows": [
{
"path": ".gitea/workflows/build.yml",
"trigger": "push to main or pull request",
"purpose": "Build and verify the deployable extension output."
},
{
"path": ".gitea/workflows/issue-opened-placeholder.yml",
"trigger": "new issue opened",
"purpose": "Placeholder workflow that prints 200 okay."
}
],
"agent_guidance": "See AGENTS.md and docs/extension-management.md for coding, build, and Chrome profile instructions. Do not edit dist/ directly; rebuild from source instead."
}