@agent-native/core 0.127.3 → 0.128.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +101 -0
- package/corpus/core/README.md +5 -26
- package/corpus/core/docs/content/actions.mdx +47 -4
- package/corpus/core/docs/content/native-chat-ui.mdx +7 -0
- package/corpus/core/docs/content/organizations-teams-permissions.mdx +109 -3
- package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
- package/corpus/core/docs/content/toolkit-org-team.mdx +72 -12
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/a2a/artifact-response.ts +36 -29
- package/corpus/core/src/action.ts +83 -2
- package/corpus/core/src/chat-threads/store.ts +48 -43
- package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
- package/corpus/core/src/client/AgentPanel.tsx +26 -6
- package/corpus/core/src/client/AssistantChat.tsx +63 -7
- package/corpus/core/src/client/DefaultSpinner.tsx +29 -0
- package/corpus/core/src/client/org/TeamPage.tsx +161 -6
- package/corpus/core/src/client/org/hooks.ts +67 -0
- package/corpus/core/src/client/org/index.ts +9 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +62 -10
- package/corpus/core/src/db/client.ts +42 -3
- package/corpus/core/src/db/ensure-additive-columns.ts +60 -33
- package/corpus/core/src/deploy/build.ts +31 -2
- package/corpus/core/src/mcp-client/routes.ts +10 -1
- package/corpus/core/src/org/app-roles-handlers.ts +152 -0
- package/corpus/core/src/org/app-roles.ts +355 -0
- package/corpus/core/src/org/index.ts +27 -1
- package/corpus/core/src/org/migrations.ts +22 -0
- package/corpus/core/src/org/plugin.ts +27 -0
- package/corpus/core/src/org/schema.ts +15 -0
- package/corpus/core/src/scripts/docs/search.ts +17 -0
- package/corpus/core/src/scripts/docs/source-search.ts +10 -0
- package/corpus/core/src/server/agent-chat/script-entries.ts +3 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +53 -52
- package/corpus/core/src/server/builder-design-systems.ts +299 -82
- package/corpus/core/src/server/core-routes-plugin.ts +6 -1
- package/corpus/core/src/server/framework-request-handler.ts +44 -6
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/analytics/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/analytics/_gitignore +2 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +21 -12
- package/corpus/templates/analytics/app/global.css +7 -7
- package/corpus/templates/analytics/app/i18n-data.ts +30 -0
- package/corpus/templates/analytics/app/lib/data-source-status.ts +2 -1
- package/corpus/templates/analytics/app/pages/DataSources.tsx +54 -10
- package/corpus/templates/analytics/changelog/2026-07-28-analytics-pages-load-reliably-with-large-dashboard-workspaces.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-28-dashboard-loading-shimmer-now-flows-smoothly-in-one-directi.md +6 -0
- package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +5 -4
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +54 -42
- package/corpus/templates/analytics/server/plugins/db.ts +1 -18
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/assets/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/assets/_gitignore +2 -0
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/brain/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/calendar/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/calendar/_gitignore +2 -0
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/clips/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/clips/_gitignore +2 -0
- package/corpus/templates/clips/actions/request-transcript.ts +77 -11
- package/corpus/templates/clips/actions/save-browser-transcript.ts +28 -7
- package/corpus/templates/clips/app/routes/record.tsx +11 -3
- package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-save-a-truncated-transcript-as-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-stop-transcribing-partway-throu.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-desktop-full-screen-clips-now-get-an-instant-local-transcrip.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-long-transcriptions-no-longer-show-a-false-transcription-sto.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-restarting-for-an-update-now-installs-the-newest-release-ins.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-the-meeting-recording-pill-now-anchors-to-the-right-edge-of-.md +6 -0
- package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +31 -2
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +114 -13
- package/corpus/templates/clips/desktop/src/lib/updater.ts +12 -4
- package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +40 -15
- package/corpus/templates/clips/desktop/src/styles.css +10 -7
- package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -14
- package/corpus/templates/clips/shared/transcript-status.ts +10 -0
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/content/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/content/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/content/_gitignore +2 -0
- package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/design/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/design/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +46 -3
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +7 -5
- package/corpus/templates/design/_gitignore +2 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +2 -2
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +7 -4
- package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +1 -1
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +10 -4
- package/corpus/templates/design/app/i18n-data.ts +10 -0
- package/corpus/templates/design/app/lib/builder-design-system-upload.ts +280 -0
- package/corpus/templates/design/app/lib/design-ui-events.ts +5 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +90 -54
- package/corpus/templates/design/app/root.tsx +18 -1
- package/corpus/templates/design/changelog/2026-07-28-figma-fig-uploads-now-show-indexing-progress-and-an-open-in-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-28-show-or-hide-design-editing-chrome-with-cmd-on-apple-devices.md +6 -0
- package/corpus/templates/design/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/design/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/design/server/handlers/index-design-system-sources.ts +82 -0
- package/corpus/templates/design/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/design/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/design/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/dispatch/_gitignore +2 -0
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/forms/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/forms/_gitignore +2 -0
- package/corpus/templates/macros/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/macros/_gitignore +2 -0
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/mail/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/mail/_gitignore +2 -0
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/plan/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/plan/_gitignore +2 -0
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/slides/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/slides/_gitignore +2 -0
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +126 -53
- package/corpus/templates/slides/app/components/design-system/builder-design-system-upload.ts +271 -0
- package/corpus/templates/slides/app/components/design-system/builder-index-response.ts +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/slides/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +79 -0
- package/corpus/templates/slides/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/slides/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/slides/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/tasks/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/tasks/_gitignore +2 -0
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +30 -29
- package/dist/a2a/artifact-response.js.map +1 -1
- package/dist/action.d.ts +36 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +37 -2
- package/dist/action.js.map +1 -1
- package/dist/chat-threads/store.d.ts +12 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +48 -42
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.js +46 -3
- package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +3 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +11 -9
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +57 -6
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts +7 -0
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +25 -1
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts +13 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +41 -11
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +37 -0
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +37 -0
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +3 -2
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +1 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts +8 -0
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +38 -11
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/db/client.d.ts +12 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +40 -3
- package/dist/db/client.js.map +1 -1
- package/dist/db/ensure-additive-columns.d.ts.map +1 -1
- package/dist/db/ensure-additive-columns.js +54 -32
- package/dist/db/ensure-additive-columns.js.map +1 -1
- package/dist/deploy/build.d.ts +1 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +23 -2
- package/dist/deploy/build.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/mcp-client/routes.d.ts +3 -1
- package/dist/mcp-client/routes.d.ts.map +1 -1
- package/dist/mcp-client/routes.js +8 -2
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/org/app-roles-handlers.d.ts +27 -0
- package/dist/org/app-roles-handlers.d.ts.map +1 -0
- package/dist/org/app-roles-handlers.js +125 -0
- package/dist/org/app-roles-handlers.js.map +1 -0
- package/dist/org/app-roles.d.ts +136 -0
- package/dist/org/app-roles.d.ts.map +1 -0
- package/dist/org/app-roles.js +216 -0
- package/dist/org/app-roles.js.map +1 -0
- package/dist/org/index.d.ts +4 -1
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +3 -1
- package/dist/org/index.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +22 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/plugin.d.ts +2 -0
- package/dist/org/plugin.d.ts.map +1 -1
- package/dist/org/plugin.js +20 -0
- package/dist/org/plugin.js.map +1 -1
- package/dist/org/schema.d.ts +143 -0
- package/dist/org/schema.d.ts.map +1 -1
- package/dist/org/schema.js +14 -0
- package/dist/org/schema.js.map +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
- package/dist/provider-api/actions/provider-api.d.ts +4 -4
- package/dist/scripts/docs/search.d.ts.map +1 -1
- package/dist/scripts/docs/search.js +15 -0
- package/dist/scripts/docs/search.js.map +1 -1
- package/dist/scripts/docs/source-search.d.ts +7 -0
- package/dist/scripts/docs/source-search.d.ts.map +1 -1
- package/dist/scripts/docs/source-search.js +9 -0
- package/dist/scripts/docs/source-search.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
- package/dist/server/agent-chat/script-entries.js +3 -0
- package/dist/server/agent-chat/script-entries.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +46 -48
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +49 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +221 -69
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +6 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +42 -6
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/docs/content/actions.mdx +47 -4
- package/docs/content/native-chat-ui.mdx +7 -0
- package/docs/content/organizations-teams-permissions.mdx +109 -3
- package/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
- package/docs/content/toolkit-org-team.mdx +72 -12
- package/package.json +2 -1
- package/src/a2a/artifact-response.ts +36 -29
- package/src/action.ts +83 -2
- package/src/chat-threads/store.ts +48 -43
- package/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
- package/src/client/AgentPanel.tsx +26 -6
- package/src/client/AssistantChat.tsx +63 -7
- package/src/client/DefaultSpinner.tsx +29 -0
- package/src/client/org/TeamPage.tsx +161 -6
- package/src/client/org/hooks.ts +67 -0
- package/src/client/org/index.ts +9 -0
- package/src/client/transcription/use-live-transcription.ts +62 -10
- package/src/db/client.ts +42 -3
- package/src/db/ensure-additive-columns.ts +60 -33
- package/src/deploy/build.ts +31 -2
- package/src/mcp-client/routes.ts +10 -1
- package/src/org/app-roles-handlers.ts +152 -0
- package/src/org/app-roles.ts +355 -0
- package/src/org/index.ts +27 -1
- package/src/org/migrations.ts +22 -0
- package/src/org/plugin.ts +27 -0
- package/src/org/schema.ts +15 -0
- package/src/scripts/docs/search.ts +17 -0
- package/src/scripts/docs/source-search.ts +10 -0
- package/src/server/agent-chat/script-entries.ts +3 -0
- package/src/server/agent-chat-plugin.ts +53 -52
- package/src/server/builder-design-systems.ts +299 -82
- package/src/server/core-routes-plugin.ts +6 -1
- package/src/server/framework-request-handler.ts +44 -6
- package/src/server/index.ts +8 -0
- package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +0 -530
- package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +0 -191
- package/corpus/core/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +0 -115
- package/corpus/core/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
- package/corpus/core/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/core/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -221
- package/corpus/core/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +0 -220
- package/corpus/core/src/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +0 -263
- package/corpus/core/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +0 -174
- package/corpus/core/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +0 -232
- package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +0 -282
- package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +0 -119
- package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +0 -123
- package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -122
- package/corpus/core/src/templates/chat/.env.example +0 -5
- package/corpus/core/src/templates/chat/.ignore +0 -0
- package/corpus/core/src/templates/chat/.oxfmtrc.json +0 -8
- package/corpus/core/src/templates/chat/AGENTS.md +0 -77
- package/corpus/core/src/templates/chat/CHANGELOG.md +0 -10
- package/corpus/core/src/templates/chat/DEVELOPING.md +0 -185
- package/corpus/core/src/templates/chat/README.md +0 -32
- package/corpus/core/src/templates/chat/_gitignore +0 -46
- package/corpus/core/src/templates/chat/actions/hello.ts +0 -13
- package/corpus/core/src/templates/chat/actions/navigate.ts +0 -41
- package/corpus/core/src/templates/chat/actions/run.ts +0 -2
- package/corpus/core/src/templates/chat/actions/view-screen.ts +0 -31
- package/corpus/core/src/templates/chat/app/components/layout/Header.tsx +0 -60
- package/corpus/core/src/templates/chat/app/components/layout/Layout.tsx +0 -188
- package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +0 -505
- package/corpus/core/src/templates/chat/app/components/ui/button.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/card.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/dropdown-menu.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/input.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/label.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/sheet.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/toolkit-provider.tsx +0 -17
- package/corpus/core/src/templates/chat/app/components/ui/tooltip.tsx +0 -1
- package/corpus/core/src/templates/chat/app/design-system.ts +0 -3
- package/corpus/core/src/templates/chat/app/entry.client.tsx +0 -22
- package/corpus/core/src/templates/chat/app/entry.server.tsx +0 -10
- package/corpus/core/src/templates/chat/app/global.css +0 -93
- package/corpus/core/src/templates/chat/app/hooks/use-navigation-state.ts +0 -93
- package/corpus/core/src/templates/chat/app/i18n/ar-SA.ts +0 -68
- package/corpus/core/src/templates/chat/app/i18n/de-DE.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/en-US.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/es-ES.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/fr-FR.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/hi-IN.ts +0 -69
- package/corpus/core/src/templates/chat/app/i18n/index.ts +0 -34
- package/corpus/core/src/templates/chat/app/i18n/ja-JP.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/ko-KR.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/pt-BR.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/zh-CN.ts +0 -66
- package/corpus/core/src/templates/chat/app/i18n/zh-TW.ts +0 -66
- package/corpus/core/src/templates/chat/app/i18n-data.ts +0 -556
- package/corpus/core/src/templates/chat/app/lib/agent-page.tsx +0 -49
- package/corpus/core/src/templates/chat/app/lib/app-config.ts +0 -11
- package/corpus/core/src/templates/chat/app/lib/tab-id.ts +0 -1
- package/corpus/core/src/templates/chat/app/lib/utils.ts +0 -1
- package/corpus/core/src/templates/chat/app/root.tsx +0 -173
- package/corpus/core/src/templates/chat/app/routes/_index.tsx +0 -94
- package/corpus/core/src/templates/chat/app/routes/agent.tsx +0 -24
- package/corpus/core/src/templates/chat/app/routes/chat.$threadId.tsx +0 -1
- package/corpus/core/src/templates/chat/app/routes/database.tsx +0 -17
- package/corpus/core/src/templates/chat/app/routes/extensions.$id.$slug.tsx +0 -2
- package/corpus/core/src/templates/chat/app/routes/extensions.$id.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes/extensions._index.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes/extensions.tsx +0 -5
- package/corpus/core/src/templates/chat/app/routes/observability.tsx +0 -19
- package/corpus/core/src/templates/chat/app/routes/settings.tsx +0 -89
- package/corpus/core/src/templates/chat/app/routes/team.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes.ts +0 -4
- package/corpus/core/src/templates/chat/app/vite-env.d.ts +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +0 -5
- package/corpus/core/src/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +0 -6
- package/corpus/core/src/templates/chat/components.json +0 -20
- package/corpus/core/src/templates/chat/learnings.defaults.md +0 -5
- package/corpus/core/src/templates/chat/netlify.toml +0 -11
- package/corpus/core/src/templates/chat/package.json +0 -92
- package/corpus/core/src/templates/chat/public/agent-native-icon-dark.svg +0 -10
- package/corpus/core/src/templates/chat/public/agent-native-icon-light.svg +0 -10
- package/corpus/core/src/templates/chat/public/agent-native-logo-dark.svg +0 -21
- package/corpus/core/src/templates/chat/public/agent-native-logo-light.svg +0 -21
- package/corpus/core/src/templates/chat/public/favicon.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-180.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-192.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-512.svg +0 -1
- package/corpus/core/src/templates/chat/public/manifest.json +0 -21
- package/corpus/core/src/templates/chat/react-router.config.ts +0 -7
- package/corpus/core/src/templates/chat/server/middleware/auth.ts +0 -15
- package/corpus/core/src/templates/chat/server/plugins/agent-chat.ts +0 -21
- package/corpus/core/src/templates/chat/server/plugins/auth.ts +0 -17
- package/corpus/core/src/templates/chat/server/routes/[...page].get.ts +0 -5
- package/corpus/core/src/templates/chat/ssr-entry.ts +0 -15
- package/corpus/core/src/templates/chat/tsconfig.json +0 -21
- package/corpus/core/src/templates/chat/vite.config.ts +0 -19
- package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +0 -151
- package/corpus/templates/design/server/routes/api/index-design-system-with-builder.post.ts +0 -1
- package/corpus/templates/slides/server/handlers/index-design-system-with-builder.ts +0 -119
- package/corpus/templates/slides/server/routes/api/index-design-system-with-builder.post.ts +0 -1
package/dist/org/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/org/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,aAAa,GAEd,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,UAAU,GAAG,GAAG,gBAAgB,MAAM,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAE5E,OAAO,KAAK,EAAE,QAAa,EAAE,EAAE;QAC7B,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE/B,UAAU;QACV,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,KAAK,EAClB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;QAEF,sEAAsE;QACtE,mEAAmE;QACnE,+DAA+D;QAC/D,6BAA6B;QAC7B,EAAE;QACF,iEAAiE;QACjE,6DAA6D;QAC7D,gEAAgE;QAChE,mEAAmE;QACnE,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,UAAU,EACvB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAChC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,uBAAuB;YACvB,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,kBAAkB;YAClB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CACH,CAAC;QAEF,2DAA2D;QAC3D,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,cAAc,EAC3B,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAChC,IAAI,MAAM,KAAK,KAAK;oBAAE,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAC7D,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,sBAAsB;YACtB,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;QAEF,uBAAuB;QACvB,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,iBAAiB,EAC9B,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CACH,CAAC;QAEF,iEAAiE;QACjE,yEAAyE;QACzE,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,kBAAkB,EAC/B,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CACH,CAAC;QAEF,sEAAsE;QACtE,oEAAoE;QACpE,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,qBAAqB,EAClC,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;QAEF,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,wCAAwC;QACxC,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,aAAa,EAC1B,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;YAClD,kEAAkE;YAClE,gEAAgE;YAChE,uDAAuD;YACvD,IACE,IAAI,KAAK,OAAO;gBAChB,IAAI,KAAK,QAAQ;gBACjB,IAAI,KAAK,UAAU;gBACnB,IAAI,KAAK,WAAW,EACpB,CAAC;gBACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK;gBAAE,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CACH,CAAC;QAEF,cAAc;QACd,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,SAAS,EACtB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CACH,CAAC;QAEF,cAAc;QACd,GAAG,CAAC,GAAG,CACL,GAAG,UAAU,SAAS,EACtB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CACH,CAAC;QAEF,wEAAwE;QACxE,0CAA0C;QAC1C,GAAG,CAAC,GAAG,CACL,UAAU,EACV,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,MAAM,KAAK,OAAO;gBAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAmB,eAAe,EAAE,CAAC","sourcesContent":["import {\n defineEventHandler,\n setResponseStatus,\n getMethod,\n getRequestURL,\n type H3Event,\n} from \"h3\";\n\nimport { runMigrations } from \"../db/migrations.js\";\nimport {\n awaitBootstrap,\n getH3App,\n FRAMEWORK_PREFIX,\n markDefaultPluginProvided,\n} from \"../server/framework-request-handler.js\";\nimport {\n getMyOrgHandler,\n createOrgHandler,\n updateOrgHandler,\n deleteOrgHandler,\n switchOrgHandler,\n listMembersHandler,\n removeMemberHandler,\n changeMemberRoleHandler,\n listInvitationsHandler,\n createInvitationHandler,\n acceptInvitationHandler,\n joinByDomainHandler,\n setDomainHandler,\n revealA2ASecretHandler,\n setA2ASecretHandler,\n syncA2ASecretHandler,\n receiveA2ASecretHandler,\n} from \"./handlers.js\";\nimport { ORG_MIGRATIONS } from \"./migrations.js\";\n\ntype NitroPluginDef = (nitroApp: any) => void | Promise<void>;\n\nconst ORG_PREFIX = `${FRAMEWORK_PREFIX}/org`;\n\n/**\n * Mounts the org REST routes under `/_agent-native/org/*` and runs the org\n * module's migrations.\n *\n * Routes:\n * GET /_agent-native/org/me — current user's active org + invites\n * POST /_agent-native/org — create organization\n * PATCH /_agent-native/org — rename organization (owner/admin)\n * DELETE /_agent-native/org — delete organization (owner only)\n * PUT /_agent-native/org/switch — switch active org\n * GET /_agent-native/org/members — list members of active org\n * DELETE /_agent-native/org/members/:email — remove member (owner/admin only)\n * GET /_agent-native/org/invitations — list pending invites\n * POST /_agent-native/org/invitations — invite by email\n * POST /_agent-native/org/invitations/:id/accept — accept an invitation\n * POST /_agent-native/org/join-by-domain — join org via email domain match\n * PUT /_agent-native/org/domain — set/clear allowed email domain (owner/admin)\n * GET /_agent-native/org/a2a-secret — reveal A2A secret on demand (owner/admin)\n * PUT /_agent-native/org/a2a-secret — regenerate or set A2A secret (owner/admin)\n * POST /_agent-native/org/a2a-secret/sync — push secret to all connected apps (owner/admin)\n * POST /_agent-native/org/a2a-secret/receive — accept a peer's secret push (JWT-auth, no session)\n */\nexport function createOrgPlugin(): NitroPluginDef {\n const migrate = runMigrations(ORG_MIGRATIONS, { table: \"_org_migrations\" });\n\n return async (nitroApp: any) => {\n markDefaultPluginProvided(nitroApp, \"org\");\n await awaitBootstrap(nitroApp);\n await migrate(nitroApp);\n\n const app = getH3App(nitroApp);\n\n // GET /me\n app.use(\n `${ORG_PREFIX}/me`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return getMyOrgHandler(event);\n }),\n );\n\n // /members, /members/:email, /members/:email/role — dispatch by path-\n // tail + method in a single handler so H3's prefix-based `app.use`\n // doesn't route a DELETE for /members/alice@example.com to the\n // GET-only /members handler.\n //\n // NOTE: the framework request handler (packages/core/src/server/\n // framework-request-handler.ts) strips the mount prefix from\n // event.url.pathname before calling the handler, so inside here\n // `url.pathname` is ALREADY the tail relative to this mount point.\n app.use(\n `${ORG_PREFIX}/members`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n const method = getMethod(event);\n if (tail === \"\" || tail === \"/\") {\n if (method !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return listMembersHandler(event);\n }\n // Tail is /:email/role\n if (/^\\/[^/]+\\/role\\/?$/.test(tail)) {\n if (method !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return changeMemberRoleHandler(event);\n }\n // Tail is /:email\n if (method !== \"DELETE\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return removeMemberHandler(event);\n }),\n );\n\n // /invitations and /invitations/:id/accept — same pattern.\n app.use(\n `${ORG_PREFIX}/invitations`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n const method = getMethod(event);\n if (tail === \"\" || tail === \"/\") {\n if (method === \"GET\") return listInvitationsHandler(event);\n if (method === \"POST\") return createInvitationHandler(event);\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n // Tail is /:id/accept\n if (/^\\/[^/]+\\/accept\\/?$/.test(tail)) {\n if (method !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return acceptInvitationHandler(event);\n }\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n }),\n );\n\n // POST /join-by-domain\n app.use(\n `${ORG_PREFIX}/join-by-domain`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return joinByDomainHandler(event);\n }),\n );\n\n // POST /a2a-secret/sync — must mount BEFORE /a2a-secret since h3\n // matches by prefix. Pushes the org's A2A secret to every connected app.\n app.use(\n `${ORG_PREFIX}/a2a-secret/sync`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return syncA2ASecretHandler(event);\n }),\n );\n\n // POST /a2a-secret/receive — must mount BEFORE /a2a-secret. Accepts a\n // peer's secret push; auth is JWT-based (see auth guard exemption).\n app.use(\n `${ORG_PREFIX}/a2a-secret/receive`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return receiveA2ASecretHandler(event);\n }),\n );\n\n // PUT /a2a-secret — must mount AFTER /a2a-secret/sync and /receive.\n // Dispatches by tail to keep PUT semantics on the parent path while\n // letting POST /a2a-secret return 405 (rather than silently routing\n // to the more-specific handlers above).\n app.use(\n `${ORG_PREFIX}/a2a-secret`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n // The sub-route handlers above intercept these tails first; if we\n // see them here it means the method didn't match (e.g. GET) and\n // we should 405 rather than fall into the PUT handler.\n if (\n tail === \"/sync\" ||\n tail === \"/sync/\" ||\n tail === \"/receive\" ||\n tail === \"/receive/\"\n ) {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n if (getMethod(event) === \"GET\") return revealA2ASecretHandler(event);\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return setA2ASecretHandler(event);\n }),\n );\n\n // PUT /domain\n app.use(\n `${ORG_PREFIX}/domain`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return setDomainHandler(event);\n }),\n );\n\n // PUT /switch\n app.use(\n `${ORG_PREFIX}/switch`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return switchOrgHandler(event);\n }),\n );\n\n // POST / (create) + PATCH / (rename) + DELETE / (delete) — mounted last\n // so the more specific routes match first\n app.use(\n ORG_PREFIX,\n defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n if (method === \"POST\") return createOrgHandler(event);\n if (method === \"PATCH\") return updateOrgHandler(event);\n if (method === \"DELETE\") return deleteOrgHandler(event);\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n };\n}\n\n/**\n * Default org plugin — mount with no configuration needed.\n *\n * Auto-mounted by the framework when a template doesn't ship `server/plugins/org.ts`.\n * To override, create your own plugin file using `createOrgPlugin()` or a\n * completely custom implementation.\n */\nexport const defaultOrgPlugin: NitroPluginDef = createOrgPlugin();\n"]}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/org/plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defineEventHandler,\n setResponseStatus,\n getMethod,\n getRequestURL,\n type H3Event,\n} from \"h3\";\n\nimport { runMigrations } from \"../db/migrations.js\";\nimport {\n awaitBootstrap,\n getH3App,\n FRAMEWORK_PREFIX,\n markDefaultPluginProvided,\n} from \"../server/framework-request-handler.js\";\nimport {\n listAppRolesHandler,\n setAppRoleHandler,\n} from \"./app-roles-handlers.js\";\nimport {\n getMyOrgHandler,\n createOrgHandler,\n updateOrgHandler,\n deleteOrgHandler,\n switchOrgHandler,\n listMembersHandler,\n removeMemberHandler,\n changeMemberRoleHandler,\n listInvitationsHandler,\n createInvitationHandler,\n acceptInvitationHandler,\n joinByDomainHandler,\n setDomainHandler,\n revealA2ASecretHandler,\n setA2ASecretHandler,\n syncA2ASecretHandler,\n receiveA2ASecretHandler,\n} from \"./handlers.js\";\nimport { ORG_MIGRATIONS } from \"./migrations.js\";\n\ntype NitroPluginDef = (nitroApp: any) => void | Promise<void>;\n\nconst ORG_PREFIX = `${FRAMEWORK_PREFIX}/org`;\n\n/**\n * Mounts the org REST routes under `/_agent-native/org/*` and runs the org\n * module's migrations.\n *\n * Routes:\n * GET /_agent-native/org/me — current user's active org + invites\n * POST /_agent-native/org — create organization\n * PATCH /_agent-native/org — rename organization (owner/admin)\n * DELETE /_agent-native/org — delete organization (owner only)\n * PUT /_agent-native/org/switch — switch active org\n * GET /_agent-native/org/members — list members of active org\n * DELETE /_agent-native/org/members/:email — remove member (owner/admin only)\n * GET /_agent-native/org/app-roles?appId=X — app role vocabulary + assignments\n * PUT /_agent-native/org/app-roles/:email — assign/clear app role (owner/admin)\n * GET /_agent-native/org/invitations — list pending invites\n * POST /_agent-native/org/invitations — invite by email\n * POST /_agent-native/org/invitations/:id/accept — accept an invitation\n * POST /_agent-native/org/join-by-domain — join org via email domain match\n * PUT /_agent-native/org/domain — set/clear allowed email domain (owner/admin)\n * GET /_agent-native/org/a2a-secret — reveal A2A secret on demand (owner/admin)\n * PUT /_agent-native/org/a2a-secret — regenerate or set A2A secret (owner/admin)\n * POST /_agent-native/org/a2a-secret/sync — push secret to all connected apps (owner/admin)\n * POST /_agent-native/org/a2a-secret/receive — accept a peer's secret push (JWT-auth, no session)\n */\nexport function createOrgPlugin(): NitroPluginDef {\n const migrate = runMigrations(ORG_MIGRATIONS, { table: \"_org_migrations\" });\n\n return async (nitroApp: any) => {\n markDefaultPluginProvided(nitroApp, \"org\");\n await awaitBootstrap(nitroApp);\n await migrate(nitroApp);\n\n const app = getH3App(nitroApp);\n\n // GET /me\n app.use(\n `${ORG_PREFIX}/me`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return getMyOrgHandler(event);\n }),\n );\n\n // /app-roles and /app-roles/:email — per-app role overlay on the roster.\n app.use(\n `${ORG_PREFIX}/app-roles`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n const method = getMethod(event);\n if (tail === \"\" || tail === \"/\") {\n if (method !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return listAppRolesHandler(event);\n }\n if (method !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return setAppRoleHandler(event);\n }),\n );\n\n // /members, /members/:email, /members/:email/role — dispatch by path-\n // tail + method in a single handler so H3's prefix-based `app.use`\n // doesn't route a DELETE for /members/alice@example.com to the\n // GET-only /members handler.\n //\n // NOTE: the framework request handler (packages/core/src/server/\n // framework-request-handler.ts) strips the mount prefix from\n // event.url.pathname before calling the handler, so inside here\n // `url.pathname` is ALREADY the tail relative to this mount point.\n app.use(\n `${ORG_PREFIX}/members`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n const method = getMethod(event);\n if (tail === \"\" || tail === \"/\") {\n if (method !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return listMembersHandler(event);\n }\n // Tail is /:email/role\n if (/^\\/[^/]+\\/role\\/?$/.test(tail)) {\n if (method !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return changeMemberRoleHandler(event);\n }\n // Tail is /:email\n if (method !== \"DELETE\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return removeMemberHandler(event);\n }),\n );\n\n // /invitations and /invitations/:id/accept — same pattern.\n app.use(\n `${ORG_PREFIX}/invitations`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n const method = getMethod(event);\n if (tail === \"\" || tail === \"/\") {\n if (method === \"GET\") return listInvitationsHandler(event);\n if (method === \"POST\") return createInvitationHandler(event);\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n // Tail is /:id/accept\n if (/^\\/[^/]+\\/accept\\/?$/.test(tail)) {\n if (method !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return acceptInvitationHandler(event);\n }\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n }),\n );\n\n // POST /join-by-domain\n app.use(\n `${ORG_PREFIX}/join-by-domain`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return joinByDomainHandler(event);\n }),\n );\n\n // POST /a2a-secret/sync — must mount BEFORE /a2a-secret since h3\n // matches by prefix. Pushes the org's A2A secret to every connected app.\n app.use(\n `${ORG_PREFIX}/a2a-secret/sync`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return syncA2ASecretHandler(event);\n }),\n );\n\n // POST /a2a-secret/receive — must mount BEFORE /a2a-secret. Accepts a\n // peer's secret push; auth is JWT-based (see auth guard exemption).\n app.use(\n `${ORG_PREFIX}/a2a-secret/receive`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return receiveA2ASecretHandler(event);\n }),\n );\n\n // PUT /a2a-secret — must mount AFTER /a2a-secret/sync and /receive.\n // Dispatches by tail to keep PUT semantics on the parent path while\n // letting POST /a2a-secret return 405 (rather than silently routing\n // to the more-specific handlers above).\n app.use(\n `${ORG_PREFIX}/a2a-secret`,\n defineEventHandler(async (event: H3Event) => {\n const tail = getRequestURL(event).pathname || \"/\";\n // The sub-route handlers above intercept these tails first; if we\n // see them here it means the method didn't match (e.g. GET) and\n // we should 405 rather than fall into the PUT handler.\n if (\n tail === \"/sync\" ||\n tail === \"/sync/\" ||\n tail === \"/receive\" ||\n tail === \"/receive/\"\n ) {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n if (getMethod(event) === \"GET\") return revealA2ASecretHandler(event);\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return setA2ASecretHandler(event);\n }),\n );\n\n // PUT /domain\n app.use(\n `${ORG_PREFIX}/domain`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return setDomainHandler(event);\n }),\n );\n\n // PUT /switch\n app.use(\n `${ORG_PREFIX}/switch`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"PUT\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n return switchOrgHandler(event);\n }),\n );\n\n // POST / (create) + PATCH / (rename) + DELETE / (delete) — mounted last\n // so the more specific routes match first\n app.use(\n ORG_PREFIX,\n defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n if (method === \"POST\") return createOrgHandler(event);\n if (method === \"PATCH\") return updateOrgHandler(event);\n if (method === \"DELETE\") return deleteOrgHandler(event);\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n };\n}\n\n/**\n * Default org plugin — mount with no configuration needed.\n *\n * Auto-mounted by the framework when a template doesn't ship `server/plugins/org.ts`.\n * To override, create your own plugin file using `createOrgPlugin()` or a\n * completely custom implementation.\n */\nexport const defaultOrgPlugin: NitroPluginDef = createOrgPlugin();\n"]}
|
package/dist/org/schema.d.ts
CHANGED
|
@@ -217,6 +217,149 @@ export declare const orgMembers: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
217
217
|
};
|
|
218
218
|
dialect: 'sqlite';
|
|
219
219
|
}>;
|
|
220
|
+
/**
|
|
221
|
+
* Per-app role assignments, keyed to an existing `org_members` row. An app role
|
|
222
|
+
* only narrows what a member may do inside one app; it never grants membership,
|
|
223
|
+
* and it never implies an org role.
|
|
224
|
+
*/
|
|
225
|
+
export declare const appMemberRoles: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
226
|
+
name: "app_member_roles";
|
|
227
|
+
schema: undefined;
|
|
228
|
+
columns: {
|
|
229
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
230
|
+
name: "id";
|
|
231
|
+
tableName: "app_member_roles";
|
|
232
|
+
dataType: "string";
|
|
233
|
+
columnType: "SQLiteText";
|
|
234
|
+
data: string;
|
|
235
|
+
driverParam: string;
|
|
236
|
+
notNull: true;
|
|
237
|
+
hasDefault: false;
|
|
238
|
+
isPrimaryKey: true;
|
|
239
|
+
isAutoincrement: false;
|
|
240
|
+
hasRuntimeDefault: false;
|
|
241
|
+
enumValues: [string, ...string[]];
|
|
242
|
+
baseColumn: never;
|
|
243
|
+
identity: undefined;
|
|
244
|
+
generated: undefined;
|
|
245
|
+
}, {}, {
|
|
246
|
+
length: number;
|
|
247
|
+
}>;
|
|
248
|
+
orgId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
249
|
+
name: "org_id";
|
|
250
|
+
tableName: "app_member_roles";
|
|
251
|
+
dataType: "string";
|
|
252
|
+
columnType: "SQLiteText";
|
|
253
|
+
data: string;
|
|
254
|
+
driverParam: string;
|
|
255
|
+
notNull: true;
|
|
256
|
+
hasDefault: false;
|
|
257
|
+
isPrimaryKey: false;
|
|
258
|
+
isAutoincrement: false;
|
|
259
|
+
hasRuntimeDefault: false;
|
|
260
|
+
enumValues: [string, ...string[]];
|
|
261
|
+
baseColumn: never;
|
|
262
|
+
identity: undefined;
|
|
263
|
+
generated: undefined;
|
|
264
|
+
}, {}, {
|
|
265
|
+
length: number;
|
|
266
|
+
}>;
|
|
267
|
+
appId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
268
|
+
name: "app_id";
|
|
269
|
+
tableName: "app_member_roles";
|
|
270
|
+
dataType: "string";
|
|
271
|
+
columnType: "SQLiteText";
|
|
272
|
+
data: string;
|
|
273
|
+
driverParam: string;
|
|
274
|
+
notNull: true;
|
|
275
|
+
hasDefault: false;
|
|
276
|
+
isPrimaryKey: false;
|
|
277
|
+
isAutoincrement: false;
|
|
278
|
+
hasRuntimeDefault: false;
|
|
279
|
+
enumValues: [string, ...string[]];
|
|
280
|
+
baseColumn: never;
|
|
281
|
+
identity: undefined;
|
|
282
|
+
generated: undefined;
|
|
283
|
+
}, {}, {
|
|
284
|
+
length: number;
|
|
285
|
+
}>;
|
|
286
|
+
email: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
287
|
+
name: "email";
|
|
288
|
+
tableName: "app_member_roles";
|
|
289
|
+
dataType: "string";
|
|
290
|
+
columnType: "SQLiteText";
|
|
291
|
+
data: string;
|
|
292
|
+
driverParam: string;
|
|
293
|
+
notNull: true;
|
|
294
|
+
hasDefault: false;
|
|
295
|
+
isPrimaryKey: false;
|
|
296
|
+
isAutoincrement: false;
|
|
297
|
+
hasRuntimeDefault: false;
|
|
298
|
+
enumValues: [string, ...string[]];
|
|
299
|
+
baseColumn: never;
|
|
300
|
+
identity: undefined;
|
|
301
|
+
generated: undefined;
|
|
302
|
+
}, {}, {
|
|
303
|
+
length: number;
|
|
304
|
+
}>;
|
|
305
|
+
role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
306
|
+
name: "role";
|
|
307
|
+
tableName: "app_member_roles";
|
|
308
|
+
dataType: "string";
|
|
309
|
+
columnType: "SQLiteText";
|
|
310
|
+
data: string;
|
|
311
|
+
driverParam: string;
|
|
312
|
+
notNull: true;
|
|
313
|
+
hasDefault: false;
|
|
314
|
+
isPrimaryKey: false;
|
|
315
|
+
isAutoincrement: false;
|
|
316
|
+
hasRuntimeDefault: false;
|
|
317
|
+
enumValues: [string, ...string[]];
|
|
318
|
+
baseColumn: never;
|
|
319
|
+
identity: undefined;
|
|
320
|
+
generated: undefined;
|
|
321
|
+
}, {}, {
|
|
322
|
+
length: number;
|
|
323
|
+
}>;
|
|
324
|
+
updatedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
325
|
+
name: "updated_by";
|
|
326
|
+
tableName: "app_member_roles";
|
|
327
|
+
dataType: "string";
|
|
328
|
+
columnType: "SQLiteText";
|
|
329
|
+
data: string;
|
|
330
|
+
driverParam: string;
|
|
331
|
+
notNull: true;
|
|
332
|
+
hasDefault: false;
|
|
333
|
+
isPrimaryKey: false;
|
|
334
|
+
isAutoincrement: false;
|
|
335
|
+
hasRuntimeDefault: false;
|
|
336
|
+
enumValues: [string, ...string[]];
|
|
337
|
+
baseColumn: never;
|
|
338
|
+
identity: undefined;
|
|
339
|
+
generated: undefined;
|
|
340
|
+
}, {}, {
|
|
341
|
+
length: number;
|
|
342
|
+
}>;
|
|
343
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
344
|
+
name: "updated_at";
|
|
345
|
+
tableName: "app_member_roles";
|
|
346
|
+
dataType: "number";
|
|
347
|
+
columnType: "SQLiteInteger";
|
|
348
|
+
data: number;
|
|
349
|
+
driverParam: number;
|
|
350
|
+
notNull: true;
|
|
351
|
+
hasDefault: false;
|
|
352
|
+
isPrimaryKey: false;
|
|
353
|
+
isAutoincrement: false;
|
|
354
|
+
hasRuntimeDefault: false;
|
|
355
|
+
enumValues: undefined;
|
|
356
|
+
baseColumn: never;
|
|
357
|
+
identity: undefined;
|
|
358
|
+
generated: undefined;
|
|
359
|
+
}, {}, {}>;
|
|
360
|
+
};
|
|
361
|
+
dialect: 'sqlite';
|
|
362
|
+
}>;
|
|
220
363
|
export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
221
364
|
name: "org_invitations";
|
|
222
365
|
schema: undefined;
|
package/dist/org/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/org/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/org/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC"}
|
package/dist/org/schema.js
CHANGED
|
@@ -14,6 +14,20 @@ export const orgMembers = table("org_members", {
|
|
|
14
14
|
role: text("role").notNull(),
|
|
15
15
|
joinedAt: integer("joined_at").notNull(),
|
|
16
16
|
});
|
|
17
|
+
/**
|
|
18
|
+
* Per-app role assignments, keyed to an existing `org_members` row. An app role
|
|
19
|
+
* only narrows what a member may do inside one app; it never grants membership,
|
|
20
|
+
* and it never implies an org role.
|
|
21
|
+
*/
|
|
22
|
+
export const appMemberRoles = table("app_member_roles", {
|
|
23
|
+
id: text("id").primaryKey(),
|
|
24
|
+
orgId: text("org_id").notNull(),
|
|
25
|
+
appId: text("app_id").notNull(),
|
|
26
|
+
email: text("email").notNull(),
|
|
27
|
+
role: text("role").notNull(),
|
|
28
|
+
updatedBy: text("updated_by").notNull(),
|
|
29
|
+
updatedAt: integer("updated_at").notNull(),
|
|
30
|
+
});
|
|
17
31
|
export const orgInvitations = table("org_invitations", {
|
|
18
32
|
id: text("id").primaryKey(),
|
|
19
33
|
orgId: text("org_id").notNull(),
|
package/dist/org/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/org/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,EAAE;IAClD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE;IAC7C,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE;IACrD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC","sourcesContent":["import { table, text, integer } from \"../db/schema.js\";\n\nexport const organizations = table(\"organizations\", {\n id: text(\"id\").primaryKey(),\n name: text(\"name\").notNull(),\n createdBy: text(\"created_by\").notNull(),\n createdAt: integer(\"created_at\").notNull(),\n allowedDomain: text(\"allowed_domain\"),\n a2aSecret: text(\"a2a_secret\"),\n});\n\nexport const orgMembers = table(\"org_members\", {\n id: text(\"id\").primaryKey(),\n orgId: text(\"org_id\").notNull(),\n email: text(\"email\").notNull(),\n role: text(\"role\").notNull(),\n joinedAt: integer(\"joined_at\").notNull(),\n});\n\nexport const orgInvitations = table(\"org_invitations\", {\n id: text(\"id\").primaryKey(),\n orgId: text(\"org_id\").notNull(),\n email: text(\"email\").notNull(),\n invitedBy: text(\"invited_by\").notNull(),\n createdAt: integer(\"created_at\").notNull(),\n status: text(\"status\").notNull(),\n role: text(\"role\"),\n});\n"]}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/org/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,EAAE;IAClD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE;IAC7C,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;CACzC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,kBAAkB,EAAE;IACtD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE;IACrD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC","sourcesContent":["import { table, text, integer } from \"../db/schema.js\";\n\nexport const organizations = table(\"organizations\", {\n id: text(\"id\").primaryKey(),\n name: text(\"name\").notNull(),\n createdBy: text(\"created_by\").notNull(),\n createdAt: integer(\"created_at\").notNull(),\n allowedDomain: text(\"allowed_domain\"),\n a2aSecret: text(\"a2a_secret\"),\n});\n\nexport const orgMembers = table(\"org_members\", {\n id: text(\"id\").primaryKey(),\n orgId: text(\"org_id\").notNull(),\n email: text(\"email\").notNull(),\n role: text(\"role\").notNull(),\n joinedAt: integer(\"joined_at\").notNull(),\n});\n\n/**\n * Per-app role assignments, keyed to an existing `org_members` row. An app role\n * only narrows what a member may do inside one app; it never grants membership,\n * and it never implies an org role.\n */\nexport const appMemberRoles = table(\"app_member_roles\", {\n id: text(\"id\").primaryKey(),\n orgId: text(\"org_id\").notNull(),\n appId: text(\"app_id\").notNull(),\n email: text(\"email\").notNull(),\n role: text(\"role\").notNull(),\n updatedBy: text(\"updated_by\").notNull(),\n updatedAt: integer(\"updated_at\").notNull(),\n});\n\nexport const orgInvitations = table(\"org_invitations\", {\n id: text(\"id\").primaryKey(),\n orgId: text(\"org_id\").notNull(),\n email: text(\"email\").notNull(),\n invitedBy: text(\"invited_by\").notNull(),\n createdAt: integer(\"created_at\").notNull(),\n status: text(\"status\").notNull(),\n role: text(\"role\"),\n});\n"]}
|
|
@@ -75,8 +75,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
75
75
|
user: "user";
|
|
76
76
|
}>>;
|
|
77
77
|
}, z.core.$strip>>, {
|
|
78
|
-
id?: undefined;
|
|
79
78
|
deleted?: undefined;
|
|
79
|
+
id?: undefined;
|
|
80
|
+
provider?: undefined;
|
|
80
81
|
found?: undefined;
|
|
81
82
|
message?: undefined;
|
|
82
83
|
providers: {
|
|
@@ -89,13 +90,12 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
89
90
|
updatedAt: number;
|
|
90
91
|
}[];
|
|
91
92
|
count: number;
|
|
92
|
-
provider?: undefined;
|
|
93
93
|
registered?: undefined;
|
|
94
94
|
label?: undefined;
|
|
95
95
|
} | {
|
|
96
|
+
deleted?: undefined;
|
|
96
97
|
count?: undefined;
|
|
97
98
|
id?: undefined;
|
|
98
|
-
deleted?: undefined;
|
|
99
99
|
message?: undefined;
|
|
100
100
|
providers?: undefined;
|
|
101
101
|
found: boolean;
|
|
@@ -103,31 +103,31 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
103
103
|
registered?: undefined;
|
|
104
104
|
label?: undefined;
|
|
105
105
|
} | {
|
|
106
|
-
count?: undefined;
|
|
107
106
|
deleted?: undefined;
|
|
107
|
+
count?: undefined;
|
|
108
|
+
provider?: undefined;
|
|
108
109
|
message?: undefined;
|
|
109
110
|
providers?: undefined;
|
|
110
|
-
provider?: undefined;
|
|
111
111
|
found: boolean;
|
|
112
112
|
id: string;
|
|
113
113
|
registered?: undefined;
|
|
114
114
|
label?: undefined;
|
|
115
115
|
} | {
|
|
116
116
|
count?: undefined;
|
|
117
|
+
provider?: undefined;
|
|
117
118
|
found?: undefined;
|
|
118
119
|
message?: undefined;
|
|
119
120
|
providers?: undefined;
|
|
120
|
-
provider?: undefined;
|
|
121
121
|
deleted: boolean;
|
|
122
122
|
id: string;
|
|
123
123
|
registered?: undefined;
|
|
124
124
|
label?: undefined;
|
|
125
125
|
} | {
|
|
126
|
-
count?: undefined;
|
|
127
126
|
deleted?: undefined;
|
|
127
|
+
count?: undefined;
|
|
128
|
+
provider?: undefined;
|
|
128
129
|
found?: undefined;
|
|
129
130
|
providers?: undefined;
|
|
130
|
-
provider?: undefined;
|
|
131
131
|
registered: boolean;
|
|
132
132
|
id: string;
|
|
133
133
|
label: string;
|
|
@@ -312,7 +312,6 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
312
312
|
scope?: "org" | "user" | undefined;
|
|
313
313
|
}, {
|
|
314
314
|
id?: undefined;
|
|
315
|
-
message?: undefined;
|
|
316
315
|
deleted?: undefined;
|
|
317
316
|
found?: undefined;
|
|
318
317
|
providers: {
|
|
@@ -328,9 +327,9 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
328
327
|
provider?: undefined;
|
|
329
328
|
registered?: undefined;
|
|
330
329
|
label?: undefined;
|
|
330
|
+
message?: undefined;
|
|
331
331
|
} | {
|
|
332
332
|
id?: undefined;
|
|
333
|
-
message?: undefined;
|
|
334
333
|
deleted?: undefined;
|
|
335
334
|
count?: undefined;
|
|
336
335
|
providers?: undefined;
|
|
@@ -338,8 +337,8 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
338
337
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
339
338
|
registered?: undefined;
|
|
340
339
|
label?: undefined;
|
|
341
|
-
} | {
|
|
342
340
|
message?: undefined;
|
|
341
|
+
} | {
|
|
343
342
|
deleted?: undefined;
|
|
344
343
|
count?: undefined;
|
|
345
344
|
providers?: undefined;
|
|
@@ -348,8 +347,8 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
348
347
|
id: string;
|
|
349
348
|
registered?: undefined;
|
|
350
349
|
label?: undefined;
|
|
351
|
-
} | {
|
|
352
350
|
message?: undefined;
|
|
351
|
+
} | {
|
|
353
352
|
found?: undefined;
|
|
354
353
|
count?: undefined;
|
|
355
354
|
providers?: undefined;
|
|
@@ -358,6 +357,7 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
358
357
|
id: string;
|
|
359
358
|
registered?: undefined;
|
|
360
359
|
label?: undefined;
|
|
360
|
+
message?: undefined;
|
|
361
361
|
} | {
|
|
362
362
|
deleted?: undefined;
|
|
363
363
|
found?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/scripts/docs/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/scripts/docs/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwOH,wBAA8B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D5E"}
|
|
@@ -21,6 +21,19 @@ function getDocsRoot() {
|
|
|
21
21
|
function getDocsDir() {
|
|
22
22
|
return path.join(getDocsRoot(), "content");
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Bundled serverless deploys carry the runtime agent bundle but not the
|
|
26
|
+
* framework doc pages, so a miss there means "not deployed", not "no such
|
|
27
|
+
* doc". Say which, or the agent concludes a documented API does not exist.
|
|
28
|
+
*/
|
|
29
|
+
function logMissingFrameworkDocsNote() {
|
|
30
|
+
if (fs.existsSync(getDocsDir()))
|
|
31
|
+
return;
|
|
32
|
+
console.log("\nNote: bundled framework doc pages are not deployed here (only this " +
|
|
33
|
+
"app's AGENTS.md and skills are). A miss above does not mean the page " +
|
|
34
|
+
"does not exist — check the framework docs another way before concluding " +
|
|
35
|
+
"an API is missing.");
|
|
36
|
+
}
|
|
24
37
|
function parseFrontmatter(raw) {
|
|
25
38
|
const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
|
|
26
39
|
if (!match)
|
|
@@ -210,6 +223,7 @@ Options:
|
|
|
210
223
|
if (!doc) {
|
|
211
224
|
console.log(`Doc not found: ${parsed.slug}`);
|
|
212
225
|
console.log(`Available: ${docs.map((d) => d.slug).join(", ")}`);
|
|
226
|
+
logMissingFrameworkDocsNote();
|
|
213
227
|
return;
|
|
214
228
|
}
|
|
215
229
|
console.log(`# ${doc.title}\n`);
|
|
@@ -222,6 +236,7 @@ Options:
|
|
|
222
236
|
const results = await searchDocs(parsed.query);
|
|
223
237
|
if (results.length === 0) {
|
|
224
238
|
console.log(`No docs found matching "${parsed.query}".`);
|
|
239
|
+
logMissingFrameworkDocsNote();
|
|
225
240
|
return;
|
|
226
241
|
}
|
|
227
242
|
console.log(`Found ${results.length} doc(s) matching "${parsed.query}":\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/scripts/docs/search.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core script: docs-search\n *\n * Search and read agent-native framework documentation.\n * Docs are bundled in @agent-native/core so they're always the right version.\n *\n * Usage:\n * pnpm action docs-search --query \"actions\"\n * pnpm action docs-search --slug authentication\n * pnpm action docs-search --list\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { parseArgs } from \"../utils.js\";\n\ninterface DocMeta {\n slug: string;\n title: string;\n description: string;\n}\n\ninterface DocFull extends DocMeta {\n body: string;\n}\n\nfunction getDocsRoot(): string {\n // Resolve from the package root:\n // src/scripts/docs/search.ts -> docs/\n // dist/scripts/docs/search.js -> docs/\n return path.resolve(\n path.dirname(new URL(import.meta.url).pathname),\n \"../../../docs\",\n );\n}\n\nfunction getDocsDir(): string {\n return path.join(getDocsRoot(), \"content\");\n}\n\nfunction parseFrontmatter(raw: string): {\n data: Record<string, string>;\n body: string;\n} {\n const match = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/);\n if (!match) return { data: {}, body: raw };\n\n const data: Record<string, string> = {};\n for (const line of match[1].split(\"\\n\")) {\n const m = line.match(/^(\\w+):\\s*\"?(.*?)\"?\\s*$/);\n if (m) data[m[1]] = m[2];\n }\n return { data, body: match[2] };\n}\n\nfunction titleFromBody(body: string): string | null {\n const heading = body.match(/^#\\s+(.+?)\\s*$/m);\n return heading?.[1]?.trim() || null;\n}\n\nfunction isDocSourceFile(filename: string): boolean {\n return filename.endsWith(\".mdx\") || filename.endsWith(\".md\");\n}\n\nfunction docSourcePathWithoutExtension(filename: string): string {\n return filename.replace(/\\.(?:mdx|md)$/, \"\");\n}\n\nfunction docSourceSlugFromFilename(filename: string): string {\n return docSourcePathWithoutExtension(\n filename.split(/[\\\\/]/).pop() ?? filename,\n );\n}\n\nfunction preferMdxDocSourceFiles(files: string[]): string[] {\n const byPath = new Map<string, string>();\n for (const file of [...files].sort()) {\n if (!isDocSourceFile(file)) continue;\n\n const pathWithoutExtension = docSourcePathWithoutExtension(file);\n const existing = byPath.get(pathWithoutExtension);\n if (!existing || file.endsWith(\".mdx\")) {\n byPath.set(pathWithoutExtension, file);\n }\n }\n return Array.from(byPath.values()).sort((a, b) =>\n docSourcePathWithoutExtension(a).localeCompare(\n docSourcePathWithoutExtension(b),\n ),\n );\n}\n\nfunction loadMarkdownDoc(filePath: string, slug: string): DocFull {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const { data, body } = parseFrontmatter(raw);\n return {\n slug,\n title: data.title || data.name || titleFromBody(body) || slug,\n description: data.description || \"\",\n body,\n };\n}\n\nfunction loadFilesystemDocs(): DocFull[] {\n const docs: DocFull[] = [];\n const rootDocs = [\n { file: \"AGENTS.md\", slug: \"agent-native-docs\" },\n { file: \"SKILL.md\", slug: \"agent-native-docs-skill\" },\n { file: \"README.md\", slug: \"agent-native-docs-readme\" },\n ];\n for (const doc of rootDocs) {\n const filePath = path.join(getDocsRoot(), doc.file);\n if (fs.existsSync(filePath)) {\n docs.push(loadMarkdownDoc(filePath, doc.slug));\n }\n }\n\n const docsDir = getDocsDir();\n if (!fs.existsSync(docsDir)) return docs;\n\n const files = preferMdxDocSourceFiles(\n fs\n .readdirSync(docsDir)\n .filter((file) => fs.statSync(path.join(docsDir, file)).isFile()),\n );\n docs.push(\n ...files.map((file) => {\n const slug = docSourceSlugFromFilename(file);\n return loadMarkdownDoc(path.join(docsDir, file), slug);\n }),\n );\n return docs;\n}\n\nfunction slugifyDocId(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nasync function loadAgentBundleDocs(): Promise<DocFull[]> {\n try {\n const { loadAgentsBundle, getRuntimeSkills, skillSubfileDocsSlug } =\n await import(\"../../server/agents-bundle.js\");\n const bundle = await loadAgentsBundle();\n const docs: DocFull[] = [];\n if (bundle.workspaceAgentsMd?.trim()) {\n docs.push({\n slug: \"agents-workspace\",\n title: \"Workspace AGENTS.md\",\n description: \"Full bundled workspace-level agent instructions.\",\n body: bundle.workspaceAgentsMd,\n });\n }\n if (bundle.agentsMd?.trim()) {\n docs.push({\n slug: \"agents-template\",\n title: \"Template AGENTS.md\",\n description: \"Full bundled template/app agent instructions.\",\n body: bundle.agentsMd,\n });\n }\n // Only runtime-visible skills are searchable/readable here — `scope: dev`\n // skills are meant for the human's coding agent (Claude Code), not the\n // in-app runtime agent, so they must not appear in docs-search results.\n for (const skill of getRuntimeSkills(bundle)) {\n const slug = `skill-${slugifyDocId(skill.meta.name)}`;\n docs.push({\n slug,\n title: `Skill: ${skill.meta.name}`,\n description: skill.meta.description,\n body: skill.content,\n });\n // Progressive-disclosure sub-files (e.g. `references/*.md`) get their\n // own searchable/readable doc so the \"also contains\" pointers the\n // skill prompt block advertises actually resolve to something.\n for (const [relPath, content] of Object.entries(skill.files)) {\n docs.push({\n slug: skillSubfileDocsSlug(skill.meta.name, relPath),\n title: `Skill: ${skill.meta.name} — ${relPath}`,\n description: `Reference file from the \"${skill.meta.name}\" skill (${relPath}).`,\n body: content,\n });\n }\n }\n return docs;\n } catch {\n return [];\n }\n}\n\nasync function loadAllDocs(): Promise<DocFull[]> {\n return [...loadFilesystemDocs(), ...(await loadAgentBundleDocs())];\n}\n\nasync function searchDocs(query: string): Promise<DocMeta[]> {\n const docs = await loadAllDocs();\n const terms = query.toLowerCase().split(/\\s+/);\n\n const scored = docs\n .map((doc) => {\n const searchText =\n `${doc.title} ${doc.description} ${doc.body}`.toLowerCase();\n let score = 0;\n for (const term of terms) {\n if (doc.title.toLowerCase().includes(term)) score += 10;\n if (doc.description.toLowerCase().includes(term)) score += 5;\n if (doc.slug.includes(term)) score += 8;\n // Count body occurrences\n const bodyMatches = searchText.split(term).length - 1;\n score += Math.min(bodyMatches, 5);\n }\n return { doc, score };\n })\n .filter((item) => item.score > 0)\n .sort((a, b) => b.score - a.score);\n\n return scored.map(({ doc }) => ({\n slug: doc.slug,\n title: doc.title,\n description: doc.description,\n }));\n}\n\nexport default async function docsSearchScript(args: string[]): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action docs-search [options]\n\nOptions:\n --query <text> Search docs by keyword (returns matching pages)\n --slug <slug> Read a specific doc page by slug\n --list List all available doc pages\n --help Show this help message`);\n return;\n }\n\n if (parsed.list === \"true\") {\n const docs = await loadAllDocs();\n const listing = docs.map((d) => ({\n slug: d.slug,\n title: d.title,\n description: d.description,\n }));\n console.log(JSON.stringify(listing, null, 2));\n return;\n }\n\n if (parsed.slug) {\n const docs = await loadAllDocs();\n const doc = docs.find((d) => d.slug === parsed.slug);\n if (!doc) {\n console.log(`Doc not found: ${parsed.slug}`);\n console.log(`Available: ${docs.map((d) => d.slug).join(\", \")}`);\n return;\n }\n console.log(`# ${doc.title}\\n`);\n if (doc.description) console.log(`${doc.description}\\n`);\n console.log(doc.body);\n return;\n }\n\n if (parsed.query) {\n const results = await searchDocs(parsed.query);\n if (results.length === 0) {\n console.log(`No docs found matching \"${parsed.query}\".`);\n return;\n }\n console.log(`Found ${results.length} doc(s) matching \"${parsed.query}\":\\n`);\n for (const result of results.slice(0, 8)) {\n console.log(` ${result.slug} — ${result.title}`);\n if (result.description) {\n console.log(` ${result.description}`);\n }\n }\n console.log(`\\nUse --slug <slug> to read the full doc.`);\n return;\n }\n\n console.log(\"Provide --query, --slug, or --list. Use --help for details.\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/scripts/docs/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,SAAS,WAAW;IAClB,iCAAiC;IACjC,wCAAwC;IACxC,yCAAyC;IACzC,OAAO,IAAI,CAAC,OAAO,CACjB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAC/C,eAAe,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B;IAClC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAAE,OAAO;IACxC,OAAO,CAAC,GAAG,CACT,uEAAuE;QACrE,uEAAuE;QACvE,0EAA0E;QAC1E,oBAAoB,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IAInC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAE3C,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAChD,IAAI,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,6BAA6B,CAAC,QAAgB;IACrD,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB;IACjD,OAAO,6BAA6B,CAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAe;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,SAAS;QAErC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/C,6BAA6B,CAAC,CAAC,CAAC,CAAC,aAAa,CAC5C,6BAA6B,CAAC,CAAC,CAAC,CACjC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAY;IACrD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI;QAC7D,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;QAChD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;QACrD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,0BAA0B,EAAE;KACxD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,KAAK,GAAG,uBAAuB,CACnC,EAAE;SACC,WAAW,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CACpE,CAAC;IACF,IAAI,CAAC,IAAI,CACP,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CACH,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAChE,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,qBAAqB;gBAC5B,WAAW,EAAE,kDAAkD;gBAC/D,IAAI,EAAE,MAAM,CAAC,iBAAiB;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,+CAA+C;gBAC5D,IAAI,EAAE,MAAM,CAAC,QAAQ;aACtB,CAAC,CAAC;QACL,CAAC;QACD,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,SAAS,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI;gBACJ,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;gBACnC,IAAI,EAAE,KAAK,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,sEAAsE;YACtE,kEAAkE;YAClE,+DAA+D;YAC/D,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;oBACpD,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,EAAE;oBAC/C,WAAW,EAAE,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,OAAO,IAAI;oBAC/E,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,OAAO,CAAC,GAAG,kBAAkB,EAAE,EAAE,GAAG,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAa;IACrC,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,UAAU,GACd,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC7D,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YACxC,yBAAyB;YACzB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACtD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC;;;;;;2CAM2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,2BAA2B,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;YACzD,2BAA2B,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,qBAAqB,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["/**\n * Core script: docs-search\n *\n * Search and read agent-native framework documentation.\n * Docs are bundled in @agent-native/core so they're always the right version.\n *\n * Usage:\n * pnpm action docs-search --query \"actions\"\n * pnpm action docs-search --slug authentication\n * pnpm action docs-search --list\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { parseArgs } from \"../utils.js\";\n\ninterface DocMeta {\n slug: string;\n title: string;\n description: string;\n}\n\ninterface DocFull extends DocMeta {\n body: string;\n}\n\nfunction getDocsRoot(): string {\n // Resolve from the package root:\n // src/scripts/docs/search.ts -> docs/\n // dist/scripts/docs/search.js -> docs/\n return path.resolve(\n path.dirname(new URL(import.meta.url).pathname),\n \"../../../docs\",\n );\n}\n\nfunction getDocsDir(): string {\n return path.join(getDocsRoot(), \"content\");\n}\n\n/**\n * Bundled serverless deploys carry the runtime agent bundle but not the\n * framework doc pages, so a miss there means \"not deployed\", not \"no such\n * doc\". Say which, or the agent concludes a documented API does not exist.\n */\nfunction logMissingFrameworkDocsNote(): void {\n if (fs.existsSync(getDocsDir())) return;\n console.log(\n \"\\nNote: bundled framework doc pages are not deployed here (only this \" +\n \"app's AGENTS.md and skills are). A miss above does not mean the page \" +\n \"does not exist — check the framework docs another way before concluding \" +\n \"an API is missing.\",\n );\n}\n\nfunction parseFrontmatter(raw: string): {\n data: Record<string, string>;\n body: string;\n} {\n const match = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/);\n if (!match) return { data: {}, body: raw };\n\n const data: Record<string, string> = {};\n for (const line of match[1].split(\"\\n\")) {\n const m = line.match(/^(\\w+):\\s*\"?(.*?)\"?\\s*$/);\n if (m) data[m[1]] = m[2];\n }\n return { data, body: match[2] };\n}\n\nfunction titleFromBody(body: string): string | null {\n const heading = body.match(/^#\\s+(.+?)\\s*$/m);\n return heading?.[1]?.trim() || null;\n}\n\nfunction isDocSourceFile(filename: string): boolean {\n return filename.endsWith(\".mdx\") || filename.endsWith(\".md\");\n}\n\nfunction docSourcePathWithoutExtension(filename: string): string {\n return filename.replace(/\\.(?:mdx|md)$/, \"\");\n}\n\nfunction docSourceSlugFromFilename(filename: string): string {\n return docSourcePathWithoutExtension(\n filename.split(/[\\\\/]/).pop() ?? filename,\n );\n}\n\nfunction preferMdxDocSourceFiles(files: string[]): string[] {\n const byPath = new Map<string, string>();\n for (const file of [...files].sort()) {\n if (!isDocSourceFile(file)) continue;\n\n const pathWithoutExtension = docSourcePathWithoutExtension(file);\n const existing = byPath.get(pathWithoutExtension);\n if (!existing || file.endsWith(\".mdx\")) {\n byPath.set(pathWithoutExtension, file);\n }\n }\n return Array.from(byPath.values()).sort((a, b) =>\n docSourcePathWithoutExtension(a).localeCompare(\n docSourcePathWithoutExtension(b),\n ),\n );\n}\n\nfunction loadMarkdownDoc(filePath: string, slug: string): DocFull {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const { data, body } = parseFrontmatter(raw);\n return {\n slug,\n title: data.title || data.name || titleFromBody(body) || slug,\n description: data.description || \"\",\n body,\n };\n}\n\nfunction loadFilesystemDocs(): DocFull[] {\n const docs: DocFull[] = [];\n const rootDocs = [\n { file: \"AGENTS.md\", slug: \"agent-native-docs\" },\n { file: \"SKILL.md\", slug: \"agent-native-docs-skill\" },\n { file: \"README.md\", slug: \"agent-native-docs-readme\" },\n ];\n for (const doc of rootDocs) {\n const filePath = path.join(getDocsRoot(), doc.file);\n if (fs.existsSync(filePath)) {\n docs.push(loadMarkdownDoc(filePath, doc.slug));\n }\n }\n\n const docsDir = getDocsDir();\n if (!fs.existsSync(docsDir)) return docs;\n\n const files = preferMdxDocSourceFiles(\n fs\n .readdirSync(docsDir)\n .filter((file) => fs.statSync(path.join(docsDir, file)).isFile()),\n );\n docs.push(\n ...files.map((file) => {\n const slug = docSourceSlugFromFilename(file);\n return loadMarkdownDoc(path.join(docsDir, file), slug);\n }),\n );\n return docs;\n}\n\nfunction slugifyDocId(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nasync function loadAgentBundleDocs(): Promise<DocFull[]> {\n try {\n const { loadAgentsBundle, getRuntimeSkills, skillSubfileDocsSlug } =\n await import(\"../../server/agents-bundle.js\");\n const bundle = await loadAgentsBundle();\n const docs: DocFull[] = [];\n if (bundle.workspaceAgentsMd?.trim()) {\n docs.push({\n slug: \"agents-workspace\",\n title: \"Workspace AGENTS.md\",\n description: \"Full bundled workspace-level agent instructions.\",\n body: bundle.workspaceAgentsMd,\n });\n }\n if (bundle.agentsMd?.trim()) {\n docs.push({\n slug: \"agents-template\",\n title: \"Template AGENTS.md\",\n description: \"Full bundled template/app agent instructions.\",\n body: bundle.agentsMd,\n });\n }\n // Only runtime-visible skills are searchable/readable here — `scope: dev`\n // skills are meant for the human's coding agent (Claude Code), not the\n // in-app runtime agent, so they must not appear in docs-search results.\n for (const skill of getRuntimeSkills(bundle)) {\n const slug = `skill-${slugifyDocId(skill.meta.name)}`;\n docs.push({\n slug,\n title: `Skill: ${skill.meta.name}`,\n description: skill.meta.description,\n body: skill.content,\n });\n // Progressive-disclosure sub-files (e.g. `references/*.md`) get their\n // own searchable/readable doc so the \"also contains\" pointers the\n // skill prompt block advertises actually resolve to something.\n for (const [relPath, content] of Object.entries(skill.files)) {\n docs.push({\n slug: skillSubfileDocsSlug(skill.meta.name, relPath),\n title: `Skill: ${skill.meta.name} — ${relPath}`,\n description: `Reference file from the \"${skill.meta.name}\" skill (${relPath}).`,\n body: content,\n });\n }\n }\n return docs;\n } catch {\n return [];\n }\n}\n\nasync function loadAllDocs(): Promise<DocFull[]> {\n return [...loadFilesystemDocs(), ...(await loadAgentBundleDocs())];\n}\n\nasync function searchDocs(query: string): Promise<DocMeta[]> {\n const docs = await loadAllDocs();\n const terms = query.toLowerCase().split(/\\s+/);\n\n const scored = docs\n .map((doc) => {\n const searchText =\n `${doc.title} ${doc.description} ${doc.body}`.toLowerCase();\n let score = 0;\n for (const term of terms) {\n if (doc.title.toLowerCase().includes(term)) score += 10;\n if (doc.description.toLowerCase().includes(term)) score += 5;\n if (doc.slug.includes(term)) score += 8;\n // Count body occurrences\n const bodyMatches = searchText.split(term).length - 1;\n score += Math.min(bodyMatches, 5);\n }\n return { doc, score };\n })\n .filter((item) => item.score > 0)\n .sort((a, b) => b.score - a.score);\n\n return scored.map(({ doc }) => ({\n slug: doc.slug,\n title: doc.title,\n description: doc.description,\n }));\n}\n\nexport default async function docsSearchScript(args: string[]): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action docs-search [options]\n\nOptions:\n --query <text> Search docs by keyword (returns matching pages)\n --slug <slug> Read a specific doc page by slug\n --list List all available doc pages\n --help Show this help message`);\n return;\n }\n\n if (parsed.list === \"true\") {\n const docs = await loadAllDocs();\n const listing = docs.map((d) => ({\n slug: d.slug,\n title: d.title,\n description: d.description,\n }));\n console.log(JSON.stringify(listing, null, 2));\n return;\n }\n\n if (parsed.slug) {\n const docs = await loadAllDocs();\n const doc = docs.find((d) => d.slug === parsed.slug);\n if (!doc) {\n console.log(`Doc not found: ${parsed.slug}`);\n console.log(`Available: ${docs.map((d) => d.slug).join(\", \")}`);\n logMissingFrameworkDocsNote();\n return;\n }\n console.log(`# ${doc.title}\\n`);\n if (doc.description) console.log(`${doc.description}\\n`);\n console.log(doc.body);\n return;\n }\n\n if (parsed.query) {\n const results = await searchDocs(parsed.query);\n if (results.length === 0) {\n console.log(`No docs found matching \"${parsed.query}\".`);\n logMissingFrameworkDocsNote();\n return;\n }\n console.log(`Found ${results.length} doc(s) matching \"${parsed.query}\":\\n`);\n for (const result of results.slice(0, 8)) {\n console.log(` ${result.slug} — ${result.title}`);\n if (result.description) {\n console.log(` ${result.description}`);\n }\n }\n console.log(`\\nUse --slug <slug> to read the full doc.`);\n return;\n }\n\n console.log(\"Provide --query, --slug, or --list. Use --help for details.\");\n}\n"]}
|
|
@@ -10,5 +10,12 @@
|
|
|
10
10
|
* pnpm action source-search --path templates/plan/AGENTS.md
|
|
11
11
|
* pnpm action source-search --list
|
|
12
12
|
*/
|
|
13
|
+
/**
|
|
14
|
+
* The corpus is a sibling of the package root, so a bundled serverless deploy
|
|
15
|
+
* never carries it. Callers register this tool conditionally: advertising a
|
|
16
|
+
* search tool whose only possible answer is "not found" costs the agent a turn
|
|
17
|
+
* and reads to it like the code genuinely does not exist.
|
|
18
|
+
*/
|
|
19
|
+
export declare function hasSourceCorpus(): boolean;
|
|
13
20
|
export default function sourceSearchScript(args: string[]): Promise<void>;
|
|
14
21
|
//# sourceMappingURL=source-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-search.d.ts","sourceRoot":"","sources":["../../../src/scripts/docs/source-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"source-search.d.ts","sourceRoot":"","sources":["../../../src/scripts/docs/source-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6DH;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AA6OD,wBAA8B,kBAAkB,CAC9C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
|
@@ -57,6 +57,15 @@ function getCorpusRoot() {
|
|
|
57
57
|
// dist/scripts/docs/source-search.js -> corpus/
|
|
58
58
|
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../corpus");
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The corpus is a sibling of the package root, so a bundled serverless deploy
|
|
62
|
+
* never carries it. Callers register this tool conditionally: advertising a
|
|
63
|
+
* search tool whose only possible answer is "not found" costs the agent a turn
|
|
64
|
+
* and reads to it like the code genuinely does not exist.
|
|
65
|
+
*/
|
|
66
|
+
export function hasSourceCorpus() {
|
|
67
|
+
return fs.existsSync(getCorpusRoot());
|
|
68
|
+
}
|
|
60
69
|
function isProbablyTextFile(filePath) {
|
|
61
70
|
const ext = path.extname(filePath).toLowerCase();
|
|
62
71
|
if (TEXT_EXTENSIONS.has(ext))
|