squadfoundry 0.1.0
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/AGENTS.md +76 -0
- package/PROJECT.md +79 -0
- package/README.md +255 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.d.ts +65 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.js +12 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts +33 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.js +179 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.js.map +1 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts +78 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.js +14 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts +31 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.js +83 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.d.ts +89 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.js +10 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts +27 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.js +118 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts +53 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.js +148 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts +13 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.js +27 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.d.ts +8 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.js +46 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.js.map +1 -0
- package/dist/orchestrator/adapters/host/ide.adapter.d.ts +61 -0
- package/dist/orchestrator/adapters/host/ide.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/ide.adapter.js +173 -0
- package/dist/orchestrator/adapters/host/ide.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/local.adapter.d.ts +26 -0
- package/dist/orchestrator/adapters/host/local.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/local.adapter.js +82 -0
- package/dist/orchestrator/adapters/host/local.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/openai.adapter.d.ts +26 -0
- package/dist/orchestrator/adapters/host/openai.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/openai.adapter.js +77 -0
- package/dist/orchestrator/adapters/host/openai.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.d.ts +13 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.js +27 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.d.ts +68 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.js +11 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts +93 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js +10 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts +34 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.js +105 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts +52 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.js +10 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts +89 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.js +11 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.d.ts +36 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.js +110 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.js.map +1 -0
- package/dist/orchestrator/artifacts/artifact-store.d.ts +47 -0
- package/dist/orchestrator/artifacts/artifact-store.d.ts.map +1 -0
- package/dist/orchestrator/artifacts/artifact-store.js +135 -0
- package/dist/orchestrator/artifacts/artifact-store.js.map +1 -0
- package/dist/orchestrator/builder/domain-classifier.d.ts +24 -0
- package/dist/orchestrator/builder/domain-classifier.d.ts.map +1 -0
- package/dist/orchestrator/builder/domain-classifier.js +156 -0
- package/dist/orchestrator/builder/domain-classifier.js.map +1 -0
- package/dist/orchestrator/builder/interview-questions.d.ts +13 -0
- package/dist/orchestrator/builder/interview-questions.d.ts.map +1 -0
- package/dist/orchestrator/builder/interview-questions.js +127 -0
- package/dist/orchestrator/builder/interview-questions.js.map +1 -0
- package/dist/orchestrator/builder/squad-builder.d.ts +53 -0
- package/dist/orchestrator/builder/squad-builder.d.ts.map +1 -0
- package/dist/orchestrator/builder/squad-builder.js +107 -0
- package/dist/orchestrator/builder/squad-builder.js.map +1 -0
- package/dist/orchestrator/builder/squad-generator.d.ts +33 -0
- package/dist/orchestrator/builder/squad-generator.d.ts.map +1 -0
- package/dist/orchestrator/builder/squad-generator.js +360 -0
- package/dist/orchestrator/builder/squad-generator.js.map +1 -0
- package/dist/orchestrator/cli/index.d.ts +3 -0
- package/dist/orchestrator/cli/index.d.ts.map +1 -0
- package/dist/orchestrator/cli/index.js +8 -0
- package/dist/orchestrator/cli/index.js.map +1 -0
- package/dist/orchestrator/context/context-index.d.ts +48 -0
- package/dist/orchestrator/context/context-index.d.ts.map +1 -0
- package/dist/orchestrator/context/context-index.js +116 -0
- package/dist/orchestrator/context/context-index.js.map +1 -0
- package/dist/orchestrator/context/context-loader.d.ts +49 -0
- package/dist/orchestrator/context/context-loader.d.ts.map +1 -0
- package/dist/orchestrator/context/context-loader.js +111 -0
- package/dist/orchestrator/context/context-loader.js.map +1 -0
- package/dist/orchestrator/core/guardrails.d.ts +33 -0
- package/dist/orchestrator/core/guardrails.d.ts.map +1 -0
- package/dist/orchestrator/core/guardrails.js +272 -0
- package/dist/orchestrator/core/guardrails.js.map +1 -0
- package/dist/orchestrator/core/state-machine.d.ts +65 -0
- package/dist/orchestrator/core/state-machine.d.ts.map +1 -0
- package/dist/orchestrator/core/state-machine.js +227 -0
- package/dist/orchestrator/core/state-machine.js.map +1 -0
- package/dist/orchestrator/core/types.d.ts +364 -0
- package/dist/orchestrator/core/types.d.ts.map +1 -0
- package/dist/orchestrator/core/types.js +10 -0
- package/dist/orchestrator/core/types.js.map +1 -0
- package/dist/orchestrator/index.d.ts +75 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +64 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/mcp/server.d.ts +35 -0
- package/dist/orchestrator/mcp/server.d.ts.map +1 -0
- package/dist/orchestrator/mcp/server.js +378 -0
- package/dist/orchestrator/mcp/server.js.map +1 -0
- package/dist/orchestrator/runtime/agent-dispatcher.d.ts +25 -0
- package/dist/orchestrator/runtime/agent-dispatcher.d.ts.map +1 -0
- package/dist/orchestrator/runtime/agent-dispatcher.js +82 -0
- package/dist/orchestrator/runtime/agent-dispatcher.js.map +1 -0
- package/dist/orchestrator/runtime/approval-gate.d.ts +55 -0
- package/dist/orchestrator/runtime/approval-gate.d.ts.map +1 -0
- package/dist/orchestrator/runtime/approval-gate.js +104 -0
- package/dist/orchestrator/runtime/approval-gate.js.map +1 -0
- package/dist/orchestrator/runtime/handoff-manager.d.ts +29 -0
- package/dist/orchestrator/runtime/handoff-manager.d.ts.map +1 -0
- package/dist/orchestrator/runtime/handoff-manager.js +80 -0
- package/dist/orchestrator/runtime/handoff-manager.js.map +1 -0
- package/dist/orchestrator/runtime/job-manager.d.ts +39 -0
- package/dist/orchestrator/runtime/job-manager.d.ts.map +1 -0
- package/dist/orchestrator/runtime/job-manager.js +132 -0
- package/dist/orchestrator/runtime/job-manager.js.map +1 -0
- package/dist/orchestrator/runtime/squad-runtime.d.ts +70 -0
- package/dist/orchestrator/runtime/squad-runtime.d.ts.map +1 -0
- package/dist/orchestrator/runtime/squad-runtime.js +249 -0
- package/dist/orchestrator/runtime/squad-runtime.js.map +1 -0
- package/dist/orchestrator/shell/cli.d.ts +4 -0
- package/dist/orchestrator/shell/cli.d.ts.map +1 -0
- package/dist/orchestrator/shell/cli.js +27 -0
- package/dist/orchestrator/shell/cli.js.map +1 -0
- package/dist/orchestrator/shell/commands/create.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/create.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/create.command.js +41 -0
- package/dist/orchestrator/shell/commands/create.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/edit.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/edit.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/edit.command.js +49 -0
- package/dist/orchestrator/shell/commands/edit.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/hosts.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/hosts.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/hosts.command.js +27 -0
- package/dist/orchestrator/shell/commands/hosts.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/init.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/init.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/init.command.js +13 -0
- package/dist/orchestrator/shell/commands/init.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/list.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/list.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/list.command.js +18 -0
- package/dist/orchestrator/shell/commands/list.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/run.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/run.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/run.command.js +71 -0
- package/dist/orchestrator/shell/commands/run.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/status.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/status.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/status.command.js +29 -0
- package/dist/orchestrator/shell/commands/status.command.js.map +1 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.d.ts +25 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.js +128 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.js.map +1 -0
- package/dist/orchestrator/shell/services/host-resolution.service.d.ts +42 -0
- package/dist/orchestrator/shell/services/host-resolution.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/host-resolution.service.js +108 -0
- package/dist/orchestrator/shell/services/host-resolution.service.js.map +1 -0
- package/dist/orchestrator/shell/services/host-runtime.service.d.ts +23 -0
- package/dist/orchestrator/shell/services/host-runtime.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/host-runtime.service.js +167 -0
- package/dist/orchestrator/shell/services/host-runtime.service.js.map +1 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts +14 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.js +16 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.js.map +1 -0
- package/dist/orchestrator/shell/services/job-execution.service.d.ts +22 -0
- package/dist/orchestrator/shell/services/job-execution.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/job-execution.service.js +39 -0
- package/dist/orchestrator/shell/services/job-execution.service.js.map +1 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts +6 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.js +111 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.js.map +1 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts +3 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.js +30 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.js.map +1 -0
- package/dist/tests/integration/instagram-squad.test.d.ts +8 -0
- package/dist/tests/integration/instagram-squad.test.d.ts.map +1 -0
- package/dist/tests/integration/instagram-squad.test.js +187 -0
- package/dist/tests/integration/instagram-squad.test.js.map +1 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.d.ts +2 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.d.ts.map +1 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.js +42 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.js.map +1 -0
- package/dist/tests/integration/software-squad.test.d.ts +8 -0
- package/dist/tests/integration/software-squad.test.d.ts.map +1 -0
- package/dist/tests/integration/software-squad.test.js +207 -0
- package/dist/tests/integration/software-squad.test.js.map +1 -0
- package/dist/tests/unit/artifact-store.test.d.ts +2 -0
- package/dist/tests/unit/artifact-store.test.d.ts.map +1 -0
- package/dist/tests/unit/artifact-store.test.js +137 -0
- package/dist/tests/unit/artifact-store.test.js.map +1 -0
- package/dist/tests/unit/context-loader.test.d.ts +2 -0
- package/dist/tests/unit/context-loader.test.d.ts.map +1 -0
- package/dist/tests/unit/context-loader.test.js +109 -0
- package/dist/tests/unit/context-loader.test.js.map +1 -0
- package/dist/tests/unit/docs/host-native-docs.test.d.ts +2 -0
- package/dist/tests/unit/docs/host-native-docs.test.d.ts.map +1 -0
- package/dist/tests/unit/docs/host-native-docs.test.js +18 -0
- package/dist/tests/unit/docs/host-native-docs.test.js.map +1 -0
- package/dist/tests/unit/guardrails.test.d.ts +2 -0
- package/dist/tests/unit/guardrails.test.d.ts.map +1 -0
- package/dist/tests/unit/guardrails.test.js +202 -0
- package/dist/tests/unit/guardrails.test.js.map +1 -0
- package/dist/tests/unit/host/host-adapter-contract.test.d.ts +2 -0
- package/dist/tests/unit/host/host-adapter-contract.test.d.ts.map +1 -0
- package/dist/tests/unit/host/host-adapter-contract.test.js +53 -0
- package/dist/tests/unit/host/host-adapter-contract.test.js.map +1 -0
- package/dist/tests/unit/host/ide.adapter.test.d.ts +2 -0
- package/dist/tests/unit/host/ide.adapter.test.d.ts.map +1 -0
- package/dist/tests/unit/host/ide.adapter.test.js +17 -0
- package/dist/tests/unit/host/ide.adapter.test.js.map +1 -0
- package/dist/tests/unit/host/native-ide-adapters.test.d.ts +2 -0
- package/dist/tests/unit/host/native-ide-adapters.test.d.ts.map +1 -0
- package/dist/tests/unit/host/native-ide-adapters.test.js +26 -0
- package/dist/tests/unit/host/native-ide-adapters.test.js.map +1 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts +2 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts.map +1 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js +128 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js.map +1 -0
- package/dist/tests/unit/shell/active-host-detector.test.d.ts +2 -0
- package/dist/tests/unit/shell/active-host-detector.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/active-host-detector.test.js +85 -0
- package/dist/tests/unit/shell/active-host-detector.test.js.map +1 -0
- package/dist/tests/unit/shell/host-resolution.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/host-resolution.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/host-resolution.service.test.js +252 -0
- package/dist/tests/unit/shell/host-resolution.service.test.js.map +1 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.d.ts +2 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.js +58 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.js.map +1 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.js +58 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.js.map +1 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.js +40 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.js.map +1 -0
- package/dist/tests/unit/squad-builder.test.d.ts +2 -0
- package/dist/tests/unit/squad-builder.test.d.ts.map +1 -0
- package/dist/tests/unit/squad-builder.test.js +126 -0
- package/dist/tests/unit/squad-builder.test.js.map +1 -0
- package/dist/tests/unit/state-machine.test.d.ts +2 -0
- package/dist/tests/unit/state-machine.test.d.ts.map +1 -0
- package/dist/tests/unit/state-machine.test.js +133 -0
- package/dist/tests/unit/state-machine.test.js.map +1 -0
- package/docs/architecture/overview.md +115 -0
- package/docs/development/adding-agents.md +75 -0
- package/docs/development/adding-hosts.md +104 -0
- package/docs/development/adding-integrations.md +83 -0
- package/docs/development/host-detection-and-resolution.md +59 -0
- package/docs/squads/how-to-create.md +85 -0
- package/docs/squads/how-to-execute.md +139 -0
- package/docs/superpowers/plans/2026-04-01-host-native-cli-shell-implementation.md +617 -0
- package/docs/superpowers/specs/2026-04-01-host-native-cli-shell-design.md +253 -0
- package/package.json +103 -0
- package/squads/examples/instagram-content/AGENTS.md +63 -0
- package/squads/examples/instagram-content/POLICIES.md +45 -0
- package/squads/examples/instagram-content/SQUAD.md +63 -0
- package/squads/examples/instagram-content/WORKFLOW.md +58 -0
- package/squads/examples/instagram-content/config/squad.json +474 -0
- package/squads/examples/software-development/AGENTS.md +88 -0
- package/squads/examples/software-development/POLICIES.md +44 -0
- package/squads/examples/software-development/SQUAD.md +65 -0
- package/squads/examples/software-development/WORKFLOW.md +78 -0
- package/squads/examples/software-development/config/squad.json +442 -0
- package/templates/AGENTS.md +46 -0
- package/templates/POLICIES.md +24 -0
- package/templates/PROJECT.md +52 -0
- package/templates/SQUAD.md +52 -0
- package/templates/TASKS.md +31 -0
- package/templates/WORKFLOW.md +35 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FilesystemContextAdapter — Real Implementation
|
|
3
|
+
*
|
|
4
|
+
* Discovers and loads context files from the local filesystem.
|
|
5
|
+
* This is the primary context adapter for local development.
|
|
6
|
+
*
|
|
7
|
+
* Priority order (highest to lowest):
|
|
8
|
+
* 1. PROJECT.md
|
|
9
|
+
* 2. TASKS.md
|
|
10
|
+
* 3. AGENTS.md
|
|
11
|
+
* 4. README.md
|
|
12
|
+
* 5. docs/**
|
|
13
|
+
* 6. specs/**
|
|
14
|
+
* 7. playbooks/**
|
|
15
|
+
* 8. policies/**
|
|
16
|
+
* 9. templates/**
|
|
17
|
+
* 10. workflows/**
|
|
18
|
+
* 11. brand/**
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync, existsSync, statSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { glob } from 'glob';
|
|
23
|
+
const CATEGORY_RULES = [
|
|
24
|
+
{ category: 'project', priority: 100, patterns: [], exactNames: ['PROJECT.md'] },
|
|
25
|
+
{ category: 'tasks', priority: 90, patterns: [], exactNames: ['TASKS.md'] },
|
|
26
|
+
{ category: 'agents', priority: 85, patterns: [], exactNames: ['AGENTS.md'] },
|
|
27
|
+
{ category: 'readme', priority: 80, patterns: [], exactNames: ['README.md'] },
|
|
28
|
+
{ category: 'docs', priority: 70, patterns: ['docs/**/*.md', 'docs/**/*.txt'] },
|
|
29
|
+
{ category: 'specs', priority: 65, patterns: ['specs/**/*.md', 'spec/**/*.md'] },
|
|
30
|
+
{ category: 'playbooks', priority: 60, patterns: ['playbooks/**/*.md', 'playbook/**/*.md'] },
|
|
31
|
+
{ category: 'policies', priority: 55, patterns: ['policies/**/*.md', 'policy/**/*.md'] },
|
|
32
|
+
{ category: 'templates', priority: 50, patterns: ['templates/**/*.md'] },
|
|
33
|
+
{ category: 'workflows', priority: 45, patterns: ['workflows/**/*.md', 'workflow/**/*.md'] },
|
|
34
|
+
{ category: 'brand', priority: 40, patterns: ['brand/**/*.md', 'brand-guidelines/**/*.md'] },
|
|
35
|
+
];
|
|
36
|
+
const RECOMMENDED_FILES = ['PROJECT.md', 'TASKS.md', 'README.md'];
|
|
37
|
+
const DEFAULT_MAX_SIZE = 512 * 1024; // 500 KB
|
|
38
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
39
|
+
// Adapter Implementation
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
export class FilesystemContextAdapter {
|
|
42
|
+
id = 'filesystem';
|
|
43
|
+
name = 'Filesystem Context Adapter';
|
|
44
|
+
async initialize() {
|
|
45
|
+
// No initialization needed for filesystem access
|
|
46
|
+
}
|
|
47
|
+
async discover(options) {
|
|
48
|
+
const { rootPath, excludePatterns = [], includeCategories } = options;
|
|
49
|
+
const foundFiles = [];
|
|
50
|
+
for (const rule of CATEGORY_RULES) {
|
|
51
|
+
if (includeCategories && !includeCategories.includes(rule.category))
|
|
52
|
+
continue;
|
|
53
|
+
// Check exact names first
|
|
54
|
+
if (rule.exactNames) {
|
|
55
|
+
for (const name of rule.exactNames) {
|
|
56
|
+
const abs = join(rootPath, name);
|
|
57
|
+
if (existsSync(abs)) {
|
|
58
|
+
const stat = statSync(abs);
|
|
59
|
+
foundFiles.push({
|
|
60
|
+
relativePath: name,
|
|
61
|
+
absolutePath: abs,
|
|
62
|
+
category: rule.category,
|
|
63
|
+
priority: rule.priority,
|
|
64
|
+
sizeBytes: stat.size,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Glob patterns
|
|
70
|
+
for (const pattern of rule.patterns) {
|
|
71
|
+
try {
|
|
72
|
+
const matches = await glob(pattern, {
|
|
73
|
+
cwd: rootPath,
|
|
74
|
+
ignore: [...excludePatterns, 'node_modules/**', 'dist/**', '.git/**'],
|
|
75
|
+
nodir: true,
|
|
76
|
+
});
|
|
77
|
+
for (const rel of matches) {
|
|
78
|
+
const abs = join(rootPath, rel);
|
|
79
|
+
// Skip if already found by exact name
|
|
80
|
+
if (foundFiles.some((f) => f.absolutePath === abs))
|
|
81
|
+
continue;
|
|
82
|
+
const stat = statSync(abs);
|
|
83
|
+
foundFiles.push({
|
|
84
|
+
relativePath: rel,
|
|
85
|
+
absolutePath: abs,
|
|
86
|
+
category: rule.category,
|
|
87
|
+
priority: rule.priority,
|
|
88
|
+
sizeBytes: stat.size,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Pattern failed — skip silently
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Sort by priority descending
|
|
98
|
+
foundFiles.sort((a, b) => b.priority - a.priority);
|
|
99
|
+
const missingRecommended = RECOMMENDED_FILES.filter((name) => !foundFiles.some((f) => f.relativePath === name));
|
|
100
|
+
return {
|
|
101
|
+
rootPath,
|
|
102
|
+
foundFiles,
|
|
103
|
+
missingRecommended,
|
|
104
|
+
loadedAt: new Date().toISOString(),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async load(options) {
|
|
108
|
+
const { maxFileSizeBytes = DEFAULT_MAX_SIZE } = options;
|
|
109
|
+
const discovery = await this.discover(options);
|
|
110
|
+
const loadFile = (rel) => {
|
|
111
|
+
const file = discovery.foundFiles.find((f) => f.relativePath === rel);
|
|
112
|
+
if (!file || file.sizeBytes > maxFileSizeBytes)
|
|
113
|
+
return undefined;
|
|
114
|
+
try {
|
|
115
|
+
return readFileSync(file.absolutePath, 'utf-8');
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const loadCategory = (category) => {
|
|
122
|
+
return discovery.foundFiles
|
|
123
|
+
.filter((f) => f.category === category && f.sizeBytes <= maxFileSizeBytes)
|
|
124
|
+
.map((f) => {
|
|
125
|
+
try {
|
|
126
|
+
return {
|
|
127
|
+
path: f.relativePath,
|
|
128
|
+
content: readFileSync(f.absolutePath, 'utf-8'),
|
|
129
|
+
loadedAt: new Date().toISOString(),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
.filter((x) => x !== null);
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
projectMd: loadFile('PROJECT.md'),
|
|
140
|
+
tasksMd: loadFile('TASKS.md'),
|
|
141
|
+
agentsMd: loadFile('AGENTS.md'),
|
|
142
|
+
readmeMd: loadFile('README.md'),
|
|
143
|
+
docs: loadCategory('docs'),
|
|
144
|
+
specs: loadCategory('specs'),
|
|
145
|
+
playbooks: loadCategory('playbooks'),
|
|
146
|
+
policies: loadCategory('policies'),
|
|
147
|
+
templates: loadCategory('templates'),
|
|
148
|
+
custom: [...loadCategory('workflows'), ...loadCategory('brand')],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
async loadFile(path) {
|
|
152
|
+
return readFileSync(path, 'utf-8');
|
|
153
|
+
}
|
|
154
|
+
async summarize(rootPath) {
|
|
155
|
+
const discovery = await this.discover({ rootPath });
|
|
156
|
+
const categoryCounts = {};
|
|
157
|
+
for (const file of discovery.foundFiles) {
|
|
158
|
+
categoryCounts[file.category] = (categoryCounts[file.category] ?? 0) + 1;
|
|
159
|
+
}
|
|
160
|
+
const totalBytes = discovery.foundFiles.reduce((sum, f) => sum + f.sizeBytes, 0);
|
|
161
|
+
return {
|
|
162
|
+
totalFiles: discovery.foundFiles.length,
|
|
163
|
+
totalBytes,
|
|
164
|
+
categoryCounts,
|
|
165
|
+
missingRecommended: discovery.missingRecommended,
|
|
166
|
+
hasProjectMd: discovery.foundFiles.some((f) => f.category === 'project'),
|
|
167
|
+
hasTasksMd: discovery.foundFiles.some((f) => f.category === 'tasks'),
|
|
168
|
+
hasAgentsMd: discovery.foundFiles.some((f) => f.category === 'agents'),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
async listByCategory(rootPath, category) {
|
|
172
|
+
const discovery = await this.discover({ rootPath });
|
|
173
|
+
return discovery.foundFiles.filter((f) => f.category === category);
|
|
174
|
+
}
|
|
175
|
+
async healthCheck() {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=filesystem.context-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.context-adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/context/filesystem.context-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDeployAdapter — Deployment Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts deployment operations (Vercel, AWS, GCP, Railway, Fly.io, etc.).
|
|
5
|
+
*
|
|
6
|
+
* CRITICAL SAFETY NOTE:
|
|
7
|
+
* Deploy operations ALWAYS require explicit human confirmation.
|
|
8
|
+
* The guardrail `require_human_before_deploy` must be satisfied before
|
|
9
|
+
* any implementation of this interface invokes a real deployment.
|
|
10
|
+
*
|
|
11
|
+
* STATUS: Interface defined. Concrete adapters: vercel (stub)
|
|
12
|
+
*/
|
|
13
|
+
export type DeployEnvironment = 'production' | 'staging' | 'preview' | 'development';
|
|
14
|
+
export interface DeployRequest {
|
|
15
|
+
/** The git branch or commit SHA to deploy */
|
|
16
|
+
ref: string;
|
|
17
|
+
/** Target environment */
|
|
18
|
+
environment: DeployEnvironment;
|
|
19
|
+
/** Optional environment variables to inject */
|
|
20
|
+
envVars?: Record<string, string>;
|
|
21
|
+
/** Human-provided reason/notes for this deployment */
|
|
22
|
+
notes?: string;
|
|
23
|
+
/** Job ID that triggered this deploy (for traceability) */
|
|
24
|
+
jobId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface DeployResult {
|
|
27
|
+
id: string;
|
|
28
|
+
url: string;
|
|
29
|
+
environment: DeployEnvironment;
|
|
30
|
+
ref: string;
|
|
31
|
+
status: 'pending' | 'building' | 'deploying' | 'ready' | 'failed' | 'cancelled';
|
|
32
|
+
startedAt: string;
|
|
33
|
+
completedAt?: string;
|
|
34
|
+
errorMessage?: string;
|
|
35
|
+
logUrl?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface DeploymentInfo {
|
|
38
|
+
id: string;
|
|
39
|
+
url: string;
|
|
40
|
+
environment: DeployEnvironment;
|
|
41
|
+
ref: string;
|
|
42
|
+
status: DeployResult['status'];
|
|
43
|
+
createdAt: string;
|
|
44
|
+
}
|
|
45
|
+
export interface DeployCapabilities {
|
|
46
|
+
supportedEnvironments: DeployEnvironment[];
|
|
47
|
+
supportsRollback: boolean;
|
|
48
|
+
supportsPreviewURLs: boolean;
|
|
49
|
+
requiresApprovalForProduction: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Interface for deployment adapters.
|
|
53
|
+
* Implement this to add Vercel, AWS, Railway, Fly.io, etc. support.
|
|
54
|
+
*
|
|
55
|
+
* All deploy methods MUST be guarded by human approval at the runtime layer.
|
|
56
|
+
*/
|
|
57
|
+
export interface IDeployAdapter {
|
|
58
|
+
readonly id: string;
|
|
59
|
+
readonly name: string;
|
|
60
|
+
initialize(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Trigger a deployment.
|
|
63
|
+
* SAFETY: Must only be called after human confirmation via ApprovalGate.
|
|
64
|
+
*/
|
|
65
|
+
deploy(request: DeployRequest): Promise<DeployResult>;
|
|
66
|
+
/** Poll the status of a running deployment */
|
|
67
|
+
getDeployStatus(deployId: string): Promise<DeployResult>;
|
|
68
|
+
/** List recent deployments */
|
|
69
|
+
listDeployments(environment?: DeployEnvironment, limit?: number): Promise<DeploymentInfo[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Roll back to a previous deployment.
|
|
72
|
+
* SAFETY: Must only be called after human confirmation.
|
|
73
|
+
*/
|
|
74
|
+
rollback(deployId: string, environment: DeployEnvironment): Promise<DeployResult>;
|
|
75
|
+
getCapabilities(): DeployCapabilities;
|
|
76
|
+
healthCheck(): Promise<boolean>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=IDeployAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDeployAdapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/deploy/IDeployAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;AAEpF,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,yBAAyB;IACzB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,iBAAiB,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,iBAAiB,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,EAAE,iBAAiB,EAAE,CAAA;IAC1C,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,6BAA6B,EAAE,OAAO,CAAA;CACvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3B;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAErD,8CAA8C;IAC9C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAExD,8BAA8B;IAC9B,eAAe,CAAC,WAAW,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAE3F;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEjF,eAAe,IAAI,kBAAkB,CAAA;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDeployAdapter — Deployment Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts deployment operations (Vercel, AWS, GCP, Railway, Fly.io, etc.).
|
|
5
|
+
*
|
|
6
|
+
* CRITICAL SAFETY NOTE:
|
|
7
|
+
* Deploy operations ALWAYS require explicit human confirmation.
|
|
8
|
+
* The guardrail `require_human_before_deploy` must be satisfied before
|
|
9
|
+
* any implementation of this interface invokes a real deployment.
|
|
10
|
+
*
|
|
11
|
+
* STATUS: Interface defined. Concrete adapters: vercel (stub)
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=IDeployAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDeployAdapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/deploy/IDeployAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VercelDeployAdapter — Stub
|
|
3
|
+
*
|
|
4
|
+
* Adapter for deployments via the Vercel API.
|
|
5
|
+
*
|
|
6
|
+
* CRITICAL SAFETY NOTE:
|
|
7
|
+
* Deploy operations ALWAYS require explicit human confirmation.
|
|
8
|
+
* Never call deploy() or rollback() without ApprovalGate confirmation.
|
|
9
|
+
*
|
|
10
|
+
* STATUS: STUB — all methods log and return mock data.
|
|
11
|
+
* To activate: set VERCEL_TOKEN and VERCEL_PROJECT_ID.
|
|
12
|
+
*/
|
|
13
|
+
import type { IDeployAdapter, DeployRequest, DeployResult, DeploymentInfo, DeployCapabilities, DeployEnvironment } from './IDeployAdapter.js';
|
|
14
|
+
export declare class VercelDeployAdapter implements IDeployAdapter {
|
|
15
|
+
readonly id = "vercel";
|
|
16
|
+
readonly name = "Vercel";
|
|
17
|
+
private token;
|
|
18
|
+
private projectId;
|
|
19
|
+
constructor(opts?: {
|
|
20
|
+
token?: string;
|
|
21
|
+
projectId?: string;
|
|
22
|
+
});
|
|
23
|
+
initialize(): Promise<void>;
|
|
24
|
+
deploy(request: DeployRequest): Promise<DeployResult>;
|
|
25
|
+
getDeployStatus(deployId: string): Promise<DeployResult>;
|
|
26
|
+
listDeployments(_environment?: DeployEnvironment, _limit?: number): Promise<DeploymentInfo[]>;
|
|
27
|
+
rollback(deployId: string, environment: DeployEnvironment): Promise<DeployResult>;
|
|
28
|
+
getCapabilities(): DeployCapabilities;
|
|
29
|
+
healthCheck(): Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=vercel.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/deploy/vercel.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE7I,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,EAAE,YAAW;IACtB,QAAQ,CAAC,IAAI,YAAW;IAExB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAoB;gBAEzB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAKnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAerD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAaxD,eAAe,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzF,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAcvF,eAAe,IAAI,kBAAkB;IAS/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAItC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VercelDeployAdapter — Stub
|
|
3
|
+
*
|
|
4
|
+
* Adapter for deployments via the Vercel API.
|
|
5
|
+
*
|
|
6
|
+
* CRITICAL SAFETY NOTE:
|
|
7
|
+
* Deploy operations ALWAYS require explicit human confirmation.
|
|
8
|
+
* Never call deploy() or rollback() without ApprovalGate confirmation.
|
|
9
|
+
*
|
|
10
|
+
* STATUS: STUB — all methods log and return mock data.
|
|
11
|
+
* To activate: set VERCEL_TOKEN and VERCEL_PROJECT_ID.
|
|
12
|
+
*/
|
|
13
|
+
export class VercelDeployAdapter {
|
|
14
|
+
id = 'vercel';
|
|
15
|
+
name = 'Vercel';
|
|
16
|
+
token;
|
|
17
|
+
projectId;
|
|
18
|
+
constructor(opts) {
|
|
19
|
+
this.token = opts?.token ?? process.env['VERCEL_TOKEN'];
|
|
20
|
+
this.projectId = opts?.projectId ?? process.env['VERCEL_PROJECT_ID'];
|
|
21
|
+
}
|
|
22
|
+
async initialize() {
|
|
23
|
+
if (!this.token || !this.projectId) {
|
|
24
|
+
console.warn('[VercelDeployAdapter] VERCEL_TOKEN or VERCEL_PROJECT_ID not set — running in stub mode');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async deploy(request) {
|
|
28
|
+
// SAFETY: Must only be called after human approval via ApprovalGate.
|
|
29
|
+
// STUB: POST /v13/deployments
|
|
30
|
+
console.log(`[VercelDeployAdapter][STUB] deploy ref=${request.ref} env=${request.environment}`);
|
|
31
|
+
console.warn('[VercelDeployAdapter][STUB] Real deployment NOT executed — stub mode active');
|
|
32
|
+
return {
|
|
33
|
+
id: `stub-deploy-${Date.now()}`,
|
|
34
|
+
url: `https://stub-deploy.vercel.app`,
|
|
35
|
+
environment: request.environment,
|
|
36
|
+
ref: request.ref,
|
|
37
|
+
status: 'pending',
|
|
38
|
+
startedAt: new Date().toISOString(),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async getDeployStatus(deployId) {
|
|
42
|
+
// STUB: GET /v13/deployments/{id}
|
|
43
|
+
return {
|
|
44
|
+
id: deployId,
|
|
45
|
+
url: 'https://stub-deploy.vercel.app',
|
|
46
|
+
environment: 'staging',
|
|
47
|
+
ref: 'main',
|
|
48
|
+
status: 'ready',
|
|
49
|
+
startedAt: new Date().toISOString(),
|
|
50
|
+
completedAt: new Date().toISOString(),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async listDeployments(_environment, _limit = 10) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
async rollback(deployId, environment) {
|
|
57
|
+
// SAFETY: Must only be called after human approval via ApprovalGate.
|
|
58
|
+
console.log(`[VercelDeployAdapter][STUB] rollback deployId=${deployId} env=${environment}`);
|
|
59
|
+
console.warn('[VercelDeployAdapter][STUB] Real rollback NOT executed — stub mode active');
|
|
60
|
+
return {
|
|
61
|
+
id: `stub-rollback-${Date.now()}`,
|
|
62
|
+
url: 'https://stub-rollback.vercel.app',
|
|
63
|
+
environment,
|
|
64
|
+
ref: deployId,
|
|
65
|
+
status: 'pending',
|
|
66
|
+
startedAt: new Date().toISOString(),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
getCapabilities() {
|
|
70
|
+
return {
|
|
71
|
+
supportedEnvironments: ['production', 'staging', 'preview'],
|
|
72
|
+
supportsRollback: true,
|
|
73
|
+
supportsPreviewURLs: true,
|
|
74
|
+
requiresApprovalForProduction: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async healthCheck() {
|
|
78
|
+
if (!this.token)
|
|
79
|
+
return false;
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=vercel.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/deploy/vercel.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,OAAO,mBAAmB;IACrB,EAAE,GAAG,QAAQ,CAAA;IACb,IAAI,GAAG,QAAQ,CAAA;IAEhB,KAAK,CAAoB;IACzB,SAAS,CAAoB;IAErC,YAAY,IAA6C;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAA;QACxG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,qEAAqE;QACrE,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,0CAA0C,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAC/F,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;QAC3F,OAAO;YACL,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE;YAC/B,GAAG,EAAE,gCAAgC;YACrC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,kCAAkC;QAClC,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,GAAG,EAAE,gCAAgC;YACrC,WAAW,EAAE,SAAS;YACtB,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,YAAgC,EAAE,MAAM,GAAG,EAAE;QACjE,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,WAA8B;QAC7D,qEAAqE;QACrE,OAAO,CAAC,GAAG,CAAC,iDAAiD,QAAQ,QAAQ,WAAW,EAAE,CAAC,CAAA;QAC3F,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;QACzF,OAAO;YACL,EAAE,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE;YACjC,GAAG,EAAE,kCAAkC;YACvC,WAAW;YACX,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAA;IACH,CAAC;IAED,eAAe;QACb,OAAO;YACL,qBAAqB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3D,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,IAAI;YACzB,6BAA6B,EAAE,IAAI;SACpC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IHostAdapter — Host Runtime Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts the execution environment (Claude Code, OpenCode, Cursor, Codex, etc.).
|
|
5
|
+
* The core orchestrator never imports a concrete host implementation directly.
|
|
6
|
+
*
|
|
7
|
+
* STATUS: Interface defined. Concrete adapters: anthropic (stub), openai (stub), local (stub)
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentDefinition, AgentResponse, JobDefinition, WorkflowStep } from '../../core/types.js';
|
|
10
|
+
export interface PromptOptions {
|
|
11
|
+
systemPrompt?: string;
|
|
12
|
+
temperature?: number;
|
|
13
|
+
maxTokens?: number;
|
|
14
|
+
model?: string;
|
|
15
|
+
stream?: boolean;
|
|
16
|
+
metadata?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export interface HostCapabilities {
|
|
19
|
+
supportsStreaming: boolean;
|
|
20
|
+
supportsToolUse: boolean;
|
|
21
|
+
supportsVision: boolean;
|
|
22
|
+
maxContextTokens: number;
|
|
23
|
+
supportedModels: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface HostDetectionContext {
|
|
26
|
+
cwd: string;
|
|
27
|
+
argv?: string[];
|
|
28
|
+
env?: Record<string, string | undefined>;
|
|
29
|
+
}
|
|
30
|
+
export interface HostDetectionResult {
|
|
31
|
+
isDetected: boolean;
|
|
32
|
+
confidence: 'high' | 'medium' | 'low';
|
|
33
|
+
reasons: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface InterviewTurnInput {
|
|
36
|
+
prompt: string;
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export interface InterviewTurnState {
|
|
40
|
+
turnCount: number;
|
|
41
|
+
history: string[];
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
export interface InterviewTurnResult {
|
|
45
|
+
content: string;
|
|
46
|
+
status: 'continue' | 'complete';
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The primary interface every host adapter must implement.
|
|
51
|
+
*
|
|
52
|
+
* A "host" is the execution environment that actually runs the LLM.
|
|
53
|
+
* It could be an IDE extension, a direct API call, a local LLM, etc.
|
|
54
|
+
*/
|
|
55
|
+
export interface IHostAdapter {
|
|
56
|
+
/** Unique identifier for this host adapter */
|
|
57
|
+
readonly id: string;
|
|
58
|
+
/** Human-readable name */
|
|
59
|
+
readonly name: string;
|
|
60
|
+
/** Detect whether current execution context belongs to this host. */
|
|
61
|
+
detect(context: HostDetectionContext): HostDetectionResult;
|
|
62
|
+
/**
|
|
63
|
+
* Initialize the adapter (load credentials, check connection, etc.)
|
|
64
|
+
* Called once before any prompts are sent.
|
|
65
|
+
*/
|
|
66
|
+
initialize(): Promise<void>;
|
|
67
|
+
/** Execute one interview turn for builder/edit conversational flow. */
|
|
68
|
+
runInterviewTurn(input: InterviewTurnInput, state: InterviewTurnState): Promise<InterviewTurnResult>;
|
|
69
|
+
/** Return active model if host can expose it; null otherwise. */
|
|
70
|
+
getActiveModel(): Promise<string | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Send a complete prompt to the host and await a full response.
|
|
73
|
+
*/
|
|
74
|
+
sendPrompt(prompt: string, agent: AgentDefinition, job: JobDefinition, step: WorkflowStep, options?: PromptOptions): Promise<AgentResponse>;
|
|
75
|
+
/**
|
|
76
|
+
* Stream a prompt response (yields chunks as they arrive).
|
|
77
|
+
* Not all hosts support streaming — check capabilities first.
|
|
78
|
+
*/
|
|
79
|
+
streamPrompt?(prompt: string, agent: AgentDefinition, job: JobDefinition, step: WorkflowStep, options?: PromptOptions): AsyncGenerator<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Report the capabilities of this host.
|
|
82
|
+
*/
|
|
83
|
+
getCapabilities(): HostCapabilities;
|
|
84
|
+
/**
|
|
85
|
+
* Check whether the host is available and configured.
|
|
86
|
+
*/
|
|
87
|
+
healthCheck(): Promise<boolean>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=IHostAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IHostAdapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/IHostAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IHostAdapter — Host Runtime Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts the execution environment (Claude Code, OpenCode, Cursor, Codex, etc.).
|
|
5
|
+
* The core orchestrator never imports a concrete host implementation directly.
|
|
6
|
+
*
|
|
7
|
+
* STATUS: Interface defined. Concrete adapters: anthropic (stub), openai (stub), local (stub)
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=IHostAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IHostAdapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/IHostAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AnthropicHostAdapter
|
|
3
|
+
*
|
|
4
|
+
* Adapter for running agents via the Anthropic Messages API.
|
|
5
|
+
* Supports Claude models (claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5).
|
|
6
|
+
*
|
|
7
|
+
* Requires: ANTHROPIC_API_KEY env var (or pass apiKey to constructor).
|
|
8
|
+
*
|
|
9
|
+
* STATUS: REAL — full implementation using @anthropic-ai/sdk.
|
|
10
|
+
*/
|
|
11
|
+
import type { IHostAdapter, PromptOptions, HostCapabilities, HostDetectionContext, HostDetectionResult, InterviewTurnInput, InterviewTurnState, InterviewTurnResult } from './IHostAdapter.js';
|
|
12
|
+
import type { AgentDefinition, AgentResponse, JobDefinition, WorkflowStep } from '../../core/types.js';
|
|
13
|
+
export declare class AnthropicHostAdapter implements IHostAdapter {
|
|
14
|
+
readonly id = "anthropic";
|
|
15
|
+
readonly name = "Anthropic Claude (API)";
|
|
16
|
+
private client;
|
|
17
|
+
private defaultModel;
|
|
18
|
+
constructor(apiKey?: string, model?: string);
|
|
19
|
+
detect(context: HostDetectionContext): HostDetectionResult;
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
runInterviewTurn(input: InterviewTurnInput, _state: InterviewTurnState): Promise<InterviewTurnResult>;
|
|
22
|
+
getActiveModel(): Promise<string | null>;
|
|
23
|
+
sendPrompt(prompt: string, agent: AgentDefinition, job: JobDefinition, step: WorkflowStep, options?: PromptOptions): Promise<AgentResponse>;
|
|
24
|
+
getCapabilities(): HostCapabilities;
|
|
25
|
+
healthCheck(): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=anthropic.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/anthropic.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAA;AAiBvH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,QAAQ,CAAC,EAAE,eAAc;IACzB,QAAQ,CAAC,IAAI,4BAA2B;IAExC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAK3C,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAUpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQrG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC;IAuCzB,eAAe,IAAI,gBAAgB;IAc7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
|