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
package/AGENTS.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Agent Conventions — Squad Foundry
|
|
2
|
+
|
|
3
|
+
This file describes how agents are defined, how they behave, and what conventions apply across all squads on this platform.
|
|
4
|
+
|
|
5
|
+
## Agent Identity
|
|
6
|
+
|
|
7
|
+
Every agent has a unique `id` within its squad. IDs are kebab-case slugs (e.g., `code-agent`, `publisher-agent`).
|
|
8
|
+
|
|
9
|
+
## Agent Instructions Pattern
|
|
10
|
+
|
|
11
|
+
Agent instructions follow this structure:
|
|
12
|
+
1. **Identity statement** — "You are the [Role]. [Short description]."
|
|
13
|
+
2. **Core task** — What to do given the inputs
|
|
14
|
+
3. **Output contract** — What to produce and in what format
|
|
15
|
+
4. **Constraints** — What NOT to do
|
|
16
|
+
5. **Handoff signal** — When and how to signal completion
|
|
17
|
+
|
|
18
|
+
## Handoff Protocol
|
|
19
|
+
|
|
20
|
+
When an agent completes its step, it signals handoff via `HandoffSignal` in the `AgentResponse`:
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"handoffSignal": {
|
|
24
|
+
"targetAgentId": "next-agent-id",
|
|
25
|
+
"condition": "step_completed_successfully",
|
|
26
|
+
"payload": { "summary": "..." }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If no handoff signal is present, the runtime auto-generates one based on the workflow's `nextStepId`.
|
|
32
|
+
|
|
33
|
+
## Artifact Protocol
|
|
34
|
+
|
|
35
|
+
Agents produce artifacts via `PendingArtifact[]` in the `AgentResponse`:
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"artifacts": [
|
|
39
|
+
{
|
|
40
|
+
"name": "prd",
|
|
41
|
+
"content": "# PRD\n...",
|
|
42
|
+
"format": "markdown"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The ArtifactStore persists these and creates `ArtifactRef` entries in the job.
|
|
49
|
+
|
|
50
|
+
## State Constraints
|
|
51
|
+
|
|
52
|
+
Each agent declares `allowedStates[]`. The guardrail `block_invalid_state_transition` enforces this — an agent cannot act outside its allowed states.
|
|
53
|
+
|
|
54
|
+
## Approval Protocol
|
|
55
|
+
|
|
56
|
+
If an agent needs human approval, it sets `approvalNeeded: true` and `approvalReason: "..."` in the response. The ApprovalGate handles this — execution pauses until a human resolves it.
|
|
57
|
+
|
|
58
|
+
## Prohibited Behaviors (All Agents)
|
|
59
|
+
|
|
60
|
+
- Never execute real side effects (deploy, publish, merge) without an explicit approval record
|
|
61
|
+
- Never fabricate metrics, test results, or compliance outcomes
|
|
62
|
+
- Never skip required artifacts
|
|
63
|
+
- Never act in disallowed states
|
|
64
|
+
|
|
65
|
+
## Model Preferences
|
|
66
|
+
|
|
67
|
+
Agents may specify `modelPreference` to request a specific model or provider. If absent, the squad runtime uses the host adapter's default.
|
|
68
|
+
|
|
69
|
+
## Adding a New Agent
|
|
70
|
+
|
|
71
|
+
1. Define the agent in `squads/<squad_id>/config/squad.json` under `agents[]`
|
|
72
|
+
2. Add a workflow step in `workflow.steps[]` that references the agent
|
|
73
|
+
3. Document the agent in `squads/<squad_id>/AGENTS.md`
|
|
74
|
+
4. Update `squads/<squad_id>/WORKFLOW.md` with the new step
|
|
75
|
+
|
|
76
|
+
See `docs/development/adding-agents.md` for full guide.
|
package/PROJECT.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Project: Squad Foundry
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Squad Foundry is a local, extensible multi-agent squad orchestration platform. It enables the design, configuration, and execution of collaborative AI agent squads for any domain — from software development to social media content to documentation and research.
|
|
6
|
+
|
|
7
|
+
## Domain
|
|
8
|
+
|
|
9
|
+
platform / meta-tooling
|
|
10
|
+
|
|
11
|
+
## Stack / Technology
|
|
12
|
+
|
|
13
|
+
- **Language:** TypeScript (strict mode, ESM)
|
|
14
|
+
- **Runtime:** Node.js >= 20
|
|
15
|
+
- **Test runner:** Vitest
|
|
16
|
+
- **Package manager:** npm
|
|
17
|
+
- **Core dependencies:** `commander` (CLI), `glob` (file discovery), `zod` (schema validation)
|
|
18
|
+
- **No framework dependencies** in the core layer
|
|
19
|
+
|
|
20
|
+
## Key Conventions
|
|
21
|
+
|
|
22
|
+
- **Naming:** kebab-case for files and folders, PascalCase for classes, camelCase for functions/variables
|
|
23
|
+
- **Modules:** ESM-only (`"type": "module"`)
|
|
24
|
+
- **Imports:** Always use `.js` extension in imports (required for ESM + TypeScript)
|
|
25
|
+
- **Adapter pattern:** Core never imports adapters. Always depend on interfaces.
|
|
26
|
+
- **No magic state:** All state transitions are explicit and logged
|
|
27
|
+
- **Artifacts:** All job outputs are human-readable files (JSON + Markdown)
|
|
28
|
+
|
|
29
|
+
## Project Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
orchestrator/
|
|
33
|
+
core/ Types, state machine, guardrails (zero external deps)
|
|
34
|
+
adapters/ Pluggable interface implementations (host, model, vcs, etc.)
|
|
35
|
+
context/ Context discovery and loading
|
|
36
|
+
artifacts/ Job artifact persistence
|
|
37
|
+
runtime/ Squad execution engine
|
|
38
|
+
builder/ Squad design interview + generation
|
|
39
|
+
cli/ CLI entrypoint
|
|
40
|
+
|
|
41
|
+
squads/
|
|
42
|
+
examples/ Ready-to-use squad examples
|
|
43
|
+
templates/ Reusable squad template patterns
|
|
44
|
+
|
|
45
|
+
templates/ Document templates (PROJECT.md, TASKS.md, etc.)
|
|
46
|
+
docs/ Platform documentation
|
|
47
|
+
tests/ Unit and integration tests
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Goals for Current Phase
|
|
51
|
+
|
|
52
|
+
- [x] Core type system
|
|
53
|
+
- [x] Explicit state machine
|
|
54
|
+
- [x] Guardrail engine
|
|
55
|
+
- [x] All adapter interfaces
|
|
56
|
+
- [x] Adapter stubs (host, VCS, publishing, deploy, context)
|
|
57
|
+
- [x] Context loader + index
|
|
58
|
+
- [x] Artifact store
|
|
59
|
+
- [x] Squad runtime (full execution engine)
|
|
60
|
+
- [x] Squad builder (interview + generation)
|
|
61
|
+
- [x] CLI entrypoint
|
|
62
|
+
- [x] Software development squad example
|
|
63
|
+
- [x] Instagram content squad example
|
|
64
|
+
- [x] Templates
|
|
65
|
+
- [x] Tests (unit + integration)
|
|
66
|
+
- [ ] Activate real adapters (Anthropic, GitHub, Instagram)
|
|
67
|
+
- [ ] Dashboard / status UI
|
|
68
|
+
- [ ] Multi-squad job scheduler
|
|
69
|
+
|
|
70
|
+
## Known Constraints / Non-Goals
|
|
71
|
+
|
|
72
|
+
- All external adapters are stubs — real API calls require configuration
|
|
73
|
+
- No persistent database — filesystem only
|
|
74
|
+
- No real-time collaboration between agents (sequential execution only in v0.1)
|
|
75
|
+
- No authentication layer (local use only)
|
|
76
|
+
|
|
77
|
+
## Host Compatibility
|
|
78
|
+
|
|
79
|
+
Designed to work with: Claude Code, OpenCode, Cursor, Codex, Zed, Antigravity, any host that can invoke a Node.js CLI or import TypeScript modules.
|
package/README.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Squad Foundry
|
|
2
|
+
|
|
3
|
+
**Local extensible multi-agent squad orchestration platform.**
|
|
4
|
+
|
|
5
|
+
Model-agnostic. Host-agnostic. Tool-agnostic. Domain-agnostic.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What is Squad Foundry?
|
|
10
|
+
|
|
11
|
+
Squad Foundry lets you design and run **collaborative multi-agent squads** for any domain:
|
|
12
|
+
|
|
13
|
+
- Software development (spec → code → review → test → PR → deploy)
|
|
14
|
+
- Instagram content (strategy → copy → review → approval → publish → analytics)
|
|
15
|
+
- Documentation, research, marketing, operations — anything task-and-handoff-oriented
|
|
16
|
+
|
|
17
|
+
Squads are **portable JSON configurations**. The same squad runs in Claude Code, OpenCode, Cursor, Codex, Zed, or any compatible host — just swap the adapter.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quickstart
|
|
22
|
+
|
|
23
|
+
### Instalar como pacote npm
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install squad-foundry
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Usar no Claude Code / OpenCode / Cursor / Codex / Zed
|
|
30
|
+
|
|
31
|
+
Você não precisa de API key — a IDE já é o modelo. O `IDEHostAdapter` recebe um callback que a IDE executa:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import {
|
|
35
|
+
IDEHostAdapter,
|
|
36
|
+
createSquadRuntime,
|
|
37
|
+
createSquadBuilder,
|
|
38
|
+
} from 'squad-foundry'
|
|
39
|
+
|
|
40
|
+
// O callback que você fornece É o modelo — a IDE executa isso
|
|
41
|
+
const runtime = createSquadRuntime({
|
|
42
|
+
hostAdapter: new IDEHostAdapter(async (prompt) => {
|
|
43
|
+
// Aqui você integra com o modelo que já está rodando na sua IDE.
|
|
44
|
+
// Em Claude Code: use o agente atual para responder o prompt.
|
|
45
|
+
// Em OpenCode: use opencode.complete(prompt)
|
|
46
|
+
// Em Cursor: use cursor.chat(prompt)
|
|
47
|
+
return yourIDEModel.complete(prompt)
|
|
48
|
+
}),
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
// Carregar um squad e executar um job
|
|
52
|
+
import squadJson from './squads/examples/software-development/config/squad.json' assert { type: 'json' }
|
|
53
|
+
const job = await runtime.startJob(squadJson, 'Implement dark mode', 'Add toggle to settings page')
|
|
54
|
+
await runtime.runAll(squadJson, job)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### CLI (uso local)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Instalar globalmente
|
|
61
|
+
npm install -g squad-foundry
|
|
62
|
+
|
|
63
|
+
# Inicializar config host-native
|
|
64
|
+
squad-foundry init
|
|
65
|
+
|
|
66
|
+
# Criar um novo squad (entrevista guiada via host ativo)
|
|
67
|
+
squad-foundry create
|
|
68
|
+
|
|
69
|
+
# Editar um squad existente
|
|
70
|
+
squad-foundry edit software-development
|
|
71
|
+
|
|
72
|
+
# Executar um job
|
|
73
|
+
squad-foundry run software-development --objective "Implement dark mode"
|
|
74
|
+
|
|
75
|
+
# Ver status
|
|
76
|
+
squad-foundry status software-development <job-id>
|
|
77
|
+
|
|
78
|
+
# Listar squads
|
|
79
|
+
squad-foundry list
|
|
80
|
+
|
|
81
|
+
# Ver host resolvido e preferencia persistida
|
|
82
|
+
squad-foundry hosts
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Desenvolvimento local
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Clonar e instalar
|
|
89
|
+
npm install
|
|
90
|
+
|
|
91
|
+
# Compilar
|
|
92
|
+
npm run build
|
|
93
|
+
|
|
94
|
+
# Testes
|
|
95
|
+
npm test
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Architecture
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Squad Foundry
|
|
104
|
+
├── Core Layer orchestrator/core/
|
|
105
|
+
│ ├── types.ts All portable type definitions
|
|
106
|
+
│ ├── state-machine.ts Explicit state transitions
|
|
107
|
+
│ └── guardrails.ts Policy enforcement engine
|
|
108
|
+
│
|
|
109
|
+
├── Adapter Layer orchestrator/adapters/
|
|
110
|
+
│ ├── host/ IHostAdapter + stubs (Anthropic, OpenAI, Local)
|
|
111
|
+
│ ├── model/ IModelAdapter
|
|
112
|
+
│ ├── tools/ IToolAdapter
|
|
113
|
+
│ ├── vcs/ IVCSAdapter + GitHub stub
|
|
114
|
+
│ ├── publishing/ ISocialMediaAdapter + Instagram stub
|
|
115
|
+
│ ├── deploy/ IDeployAdapter + Vercel stub
|
|
116
|
+
│ └── context/ IContextAdapter + filesystem adapter
|
|
117
|
+
│
|
|
118
|
+
├── Context Layer orchestrator/context/
|
|
119
|
+
│ ├── context-loader.ts Discovers and loads PROJECT.md, TASKS.md, docs/**
|
|
120
|
+
│ └── context-index.ts In-memory search index
|
|
121
|
+
│
|
|
122
|
+
├── Artifact Store orchestrator/artifacts/
|
|
123
|
+
│ └── artifact-store.ts Persists all job state, handoffs, outputs
|
|
124
|
+
│
|
|
125
|
+
├── Squad Runtime orchestrator/runtime/
|
|
126
|
+
│ ├── squad-runtime.ts Main execution engine
|
|
127
|
+
│ ├── job-manager.ts Job lifecycle
|
|
128
|
+
│ ├── agent-dispatcher.ts Step → Agent routing
|
|
129
|
+
│ ├── handoff-manager.ts Agent handoff records
|
|
130
|
+
│ └── approval-gate.ts Human-in-the-loop mechanism
|
|
131
|
+
│
|
|
132
|
+
├── Squad Builder orchestrator/builder/
|
|
133
|
+
│ ├── squad-builder.ts Interview orchestrator
|
|
134
|
+
│ ├── interview-questions.ts Question bank
|
|
135
|
+
│ ├── domain-classifier.ts Domain detection
|
|
136
|
+
│ └── squad-generator.ts File generation
|
|
137
|
+
│
|
|
138
|
+
├── CLI orchestrator/cli/index.ts
|
|
139
|
+
│
|
|
140
|
+
├── Squad Examples squads/examples/
|
|
141
|
+
│ ├── software-development/
|
|
142
|
+
│ └── instagram-content/
|
|
143
|
+
│
|
|
144
|
+
├── Templates templates/
|
|
145
|
+
└── Docs docs/
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Key Concepts
|
|
151
|
+
|
|
152
|
+
### Squad
|
|
153
|
+
A portable, reusable configuration defining: agents, workflow, policies, guardrails, expected artifacts. Stored as `squads/<squad_id>/config/squad.json`.
|
|
154
|
+
|
|
155
|
+
### Job
|
|
156
|
+
A runtime instance of a squad. Has a unique ID, state machine status, history, artifacts, and approvals. Stored under `artifacts/<squad_id>/<job_id>/`.
|
|
157
|
+
|
|
158
|
+
### Agent
|
|
159
|
+
A portable definition of an AI agent: role, instructions, allowed tools, handoff rules. Not tied to any specific model or host.
|
|
160
|
+
|
|
161
|
+
### Workflow
|
|
162
|
+
Ordered steps with dependencies, loops, approval gates, and guardrails. Fully declarative — no hardcoded logic.
|
|
163
|
+
|
|
164
|
+
### Guardrail
|
|
165
|
+
A programmatically enforced policy constraint. Examples: "no deploy without human approval", "no publish without compliance review".
|
|
166
|
+
|
|
167
|
+
### Adapter
|
|
168
|
+
An implementation of a well-defined interface (host, model, VCS, publish, deploy). Swap adapters to change the execution environment without touching core logic.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Squad Examples
|
|
173
|
+
|
|
174
|
+
| Squad | Domain | Agents |
|
|
175
|
+
|-------|--------|--------|
|
|
176
|
+
| `software-development` | software-development | Product, Code, Reviewer, Test, Commit, PR, Deploy |
|
|
177
|
+
| `instagram-content` | social-media | Strategy, Research, Copy, Creative Review, Brand, Approval, Publisher, Analytics |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Adapter Status
|
|
182
|
+
|
|
183
|
+
| Adapter | Tipo | Status | Quando usar |
|
|
184
|
+
|---------|------|--------|-------------|
|
|
185
|
+
| `ClaudeCodeHostAdapter` | host | **real** | Bridge CLI nativa do Claude Code (sem API key) |
|
|
186
|
+
| `OpenCodeHostAdapter` | host | **real** | Bridge CLI nativa do OpenCode (sem API key) |
|
|
187
|
+
| `IDEHostAdapter` | host | **real** | Claude Code, OpenCode, Cursor, Codex, Zed — **a IDE é o modelo** |
|
|
188
|
+
| `LocalHostAdapter` | host | stub | Ollama, LM Studio, llama.cpp local |
|
|
189
|
+
| `AnthropicHostAdapter` | host | stub | API Anthropic direta (`ANTHROPIC_API_KEY`) |
|
|
190
|
+
| `OpenAIHostAdapter` | host | stub | API OpenAI direta (`OPENAI_API_KEY`) |
|
|
191
|
+
| `GitHubVCSAdapter` | vcs | stub | `GITHUB_TOKEN` + `GITHUB_REPO` |
|
|
192
|
+
| `InstagramAdapter` | publishing | stub | `INSTAGRAM_ACCESS_TOKEN` |
|
|
193
|
+
| `VercelDeployAdapter` | deploy | stub | `VERCEL_TOKEN` |
|
|
194
|
+
| `FilesystemContextAdapter` | context | **real** | Lê arquivos locais automaticamente |
|
|
195
|
+
|
|
196
|
+
> **Nota sobre IDEs AI-nativas:** Claude Code, OpenCode, Cursor, Codex e similares **já são o modelo**. Use `IDEHostAdapter` com um callback que delega para o mecanismo nativo da IDE. Nenhum API key adicional é necessário nesses ambientes.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Context Files
|
|
201
|
+
|
|
202
|
+
Squad Foundry automatically reads:
|
|
203
|
+
|
|
204
|
+
| File | Priority | Purpose |
|
|
205
|
+
|------|----------|---------|
|
|
206
|
+
| `PROJECT.md` | 1 (highest) | Project overview, conventions |
|
|
207
|
+
| `TASKS.md` | 2 | Current task state |
|
|
208
|
+
| `AGENTS.md` | 3 | Agent conventions |
|
|
209
|
+
| `README.md` | 4 | General project info |
|
|
210
|
+
| `docs/**` | 5 | Documentation |
|
|
211
|
+
| `specs/**` | 6 | Specifications |
|
|
212
|
+
| `playbooks/**` | 7 | Playbooks |
|
|
213
|
+
| `policies/**` | 8 | Policies |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Human-in-the-Loop
|
|
218
|
+
|
|
219
|
+
Approvals are always explicit. The system never auto-approves publishing or deployment.
|
|
220
|
+
|
|
221
|
+
Configure required approvals in the squad's `POLICIES.md` and `config/squad.json`.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Host-native Resolution
|
|
226
|
+
|
|
227
|
+
Host resolution is CLI-first and explicit:
|
|
228
|
+
|
|
229
|
+
- Detector scores strong/medium/weak host signals.
|
|
230
|
+
- Resolver uses detected host when valid, then persisted host when still valid.
|
|
231
|
+
- If unresolved, interactive CLI asks for host selection.
|
|
232
|
+
- Runtime writes host provenance at `artifacts/<squad>/<job>/reports/runtime-metadata.json`.
|
|
233
|
+
- `status` prints `resolvedHost`, `confidence`, `reasons`, `activeModel`, and `fallbackPath`.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Creating a New Squad
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# Interactive interview
|
|
241
|
+
node dist/cli/index.js build
|
|
242
|
+
|
|
243
|
+
# Or programmatically
|
|
244
|
+
import { createSquadBuilder } from './orchestrator/builder/squad-builder.js'
|
|
245
|
+
const builder = createSquadBuilder()
|
|
246
|
+
const result = await builder.build(answers)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
See [`docs/squads/how-to-create.md`](docs/squads/how-to-create.md) for full guide.
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## License
|
|
254
|
+
|
|
255
|
+
MIT
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IContextAdapter — Context/Documentation Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts how context files are discovered and loaded.
|
|
5
|
+
* Default implementation reads from the local filesystem, but this
|
|
6
|
+
* interface allows future adapters to read from Notion, Confluence,
|
|
7
|
+
* GitHub wikis, or any other documentation source.
|
|
8
|
+
*
|
|
9
|
+
* STATUS: Interface defined. Concrete adapter: filesystem (real implementation)
|
|
10
|
+
*/
|
|
11
|
+
import type { ContextDiscoveryResult, DiscoveredFile, LoadedContext, ContextFileCategory } from '../../core/types.js';
|
|
12
|
+
export interface ContextLoadOptions {
|
|
13
|
+
/** Root path to scan for context files */
|
|
14
|
+
rootPath: string;
|
|
15
|
+
/** Maximum file size in bytes to load (default: 500KB) */
|
|
16
|
+
maxFileSizeBytes?: number;
|
|
17
|
+
/** File categories to include (default: all) */
|
|
18
|
+
includeCategories?: ContextFileCategory[];
|
|
19
|
+
/** Glob patterns to explicitly exclude */
|
|
20
|
+
excludePatterns?: string[];
|
|
21
|
+
/** Whether to load recursively into subdirectories */
|
|
22
|
+
recursive?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface ContextSummary {
|
|
25
|
+
totalFiles: number;
|
|
26
|
+
totalBytes: number;
|
|
27
|
+
categoryCounts: Record<ContextFileCategory, number>;
|
|
28
|
+
missingRecommended: string[];
|
|
29
|
+
hasProjectMd: boolean;
|
|
30
|
+
hasTasksMd: boolean;
|
|
31
|
+
hasAgentsMd: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Interface for context/documentation loading adapters.
|
|
35
|
+
* The context adapter is responsible for discovering and ingesting
|
|
36
|
+
* all human-authored documentation that informs agent behavior.
|
|
37
|
+
*/
|
|
38
|
+
export interface IContextAdapter {
|
|
39
|
+
readonly id: string;
|
|
40
|
+
readonly name: string;
|
|
41
|
+
/**
|
|
42
|
+
* Discover all context files in the given root path.
|
|
43
|
+
* Returns metadata without loading file contents.
|
|
44
|
+
*/
|
|
45
|
+
discover(options: ContextLoadOptions): Promise<ContextDiscoveryResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Load and return the full structured context.
|
|
48
|
+
* This is what gets attached to a JobDefinition.loadedContext.
|
|
49
|
+
*/
|
|
50
|
+
load(options: ContextLoadOptions): Promise<LoadedContext>;
|
|
51
|
+
/**
|
|
52
|
+
* Load a single file by path.
|
|
53
|
+
*/
|
|
54
|
+
loadFile(path: string): Promise<string>;
|
|
55
|
+
/**
|
|
56
|
+
* Get a summary of what context is available.
|
|
57
|
+
*/
|
|
58
|
+
summarize(rootPath: string): Promise<ContextSummary>;
|
|
59
|
+
/**
|
|
60
|
+
* List all files in a specific category.
|
|
61
|
+
*/
|
|
62
|
+
listByCategory(rootPath: string, category: ContextFileCategory): Promise<DiscoveredFile[]>;
|
|
63
|
+
healthCheck(): Promise<boolean>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=IContextAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IContextAdapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/context/IContextAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAErH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACzC,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;IACnD,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAEtE;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAEzD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAEpD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAE1F,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IContextAdapter — Context/Documentation Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstracts how context files are discovered and loaded.
|
|
5
|
+
* Default implementation reads from the local filesystem, but this
|
|
6
|
+
* interface allows future adapters to read from Notion, Confluence,
|
|
7
|
+
* GitHub wikis, or any other documentation source.
|
|
8
|
+
*
|
|
9
|
+
* STATUS: Interface defined. Concrete adapter: filesystem (real implementation)
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=IContextAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IContextAdapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/context/IContextAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 type { IContextAdapter, ContextLoadOptions, ContextSummary } from './IContextAdapter.js';
|
|
21
|
+
import type { ContextDiscoveryResult, DiscoveredFile, LoadedContext, ContextFileCategory } from '../../core/types.js';
|
|
22
|
+
export declare class FilesystemContextAdapter implements IContextAdapter {
|
|
23
|
+
readonly id = "filesystem";
|
|
24
|
+
readonly name = "Filesystem Context Adapter";
|
|
25
|
+
initialize(): Promise<void>;
|
|
26
|
+
discover(options: ContextLoadOptions): Promise<ContextDiscoveryResult>;
|
|
27
|
+
load(options: ContextLoadOptions): Promise<LoadedContext>;
|
|
28
|
+
loadFile(path: string): Promise<string>;
|
|
29
|
+
summarize(rootPath: string): Promise<ContextSummary>;
|
|
30
|
+
listByCategory(rootPath: string, category: ContextFileCategory): Promise<DiscoveredFile[]>;
|
|
31
|
+
healthCheck(): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=filesystem.context-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.context-adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/context/filesystem.context-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,mBAAmB,EAEpB,MAAM,qBAAqB,CAAA;AAkC5B,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,QAAQ,CAAC,EAAE,gBAAe;IAC1B,QAAQ,CAAC,IAAI,gCAA+B;IAEtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkEtE,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6CzD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqBpD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAK1F,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
|