@tangle-network/starter-foundry 0.7.2 → 0.13.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/LICENSE-APACHE +201 -0
- package/README.md +63 -174
- package/corpus/template-family-mapping.json +0 -1
- package/dist/cli.js +206 -85
- package/dist/cli.js.map +1 -1
- package/dist/eval/diagnoser.d.ts +2 -2
- package/dist/eval/diagnoser.js +28 -7
- package/dist/eval/diagnoser.js.map +1 -1
- package/dist/eval/propose.js +1 -1
- package/dist/eval/propose.js.map +1 -1
- package/dist/eval/replay.d.ts +8 -8
- package/dist/eval/replay.js +44 -21
- package/dist/eval/replay.js.map +1 -1
- package/dist/eval/scaffold-bridge.d.ts +6 -6
- package/dist/eval/scaffold-bridge.js +103 -30
- package/dist/eval/scaffold-bridge.js.map +1 -1
- package/dist/lib/agent-bundle.d.ts +278 -0
- package/dist/lib/agent-bundle.js +411 -0
- package/dist/lib/agent-bundle.js.map +1 -0
- package/dist/lib/agent-context.js +4 -4
- package/dist/lib/agent-context.js.map +1 -1
- package/dist/lib/agent-runners.d.ts +2 -2
- package/dist/lib/agent-runners.js +5 -3
- package/dist/lib/agent-runners.js.map +1 -1
- package/dist/lib/augment.js.map +1 -1
- package/dist/lib/brand/first-turn-flows.js +5 -3
- package/dist/lib/brand/first-turn-flows.js.map +1 -1
- package/dist/lib/brand/i18n.d.ts +2 -2
- package/dist/lib/brand/i18n.js +37 -7
- package/dist/lib/brand/i18n.js.map +1 -1
- package/dist/lib/brand/index.js +43 -8
- package/dist/lib/brand/index.js.map +1 -1
- package/dist/lib/brand/media-manifest.d.ts +2 -2
- package/dist/lib/brand/media-manifest.js +20 -4
- package/dist/lib/brand/media-manifest.js.map +1 -1
- package/dist/lib/brand/user-segments.js +49 -16
- package/dist/lib/brand/user-segments.js.map +1 -1
- package/dist/lib/brand/voice.js.map +1 -1
- package/dist/lib/bridge.d.ts +2 -2
- package/dist/lib/bridge.js +18 -14
- package/dist/lib/bridge.js.map +1 -1
- package/dist/lib/build-plan.d.ts +1 -1
- package/dist/lib/build-plan.js +66 -15
- package/dist/lib/build-plan.js.map +1 -1
- package/dist/lib/buildout-traces.d.ts +3 -3
- package/dist/lib/buildout-traces.js +4 -4
- package/dist/lib/buildout-traces.js.map +1 -1
- package/dist/lib/canary.js.map +1 -1
- package/dist/lib/capability-inferrer.d.ts +2 -2
- package/dist/lib/capability-inferrer.js +1 -1
- package/dist/lib/capability-inferrer.js.map +1 -1
- package/dist/lib/catalog.d.ts +2 -2
- package/dist/lib/cli/export-runs.d.ts +13 -0
- package/dist/lib/cli/export-runs.js +57 -0
- package/dist/lib/cli/export-runs.js.map +1 -0
- package/dist/lib/cli/gate.d.ts +11 -0
- package/dist/lib/cli/gate.js +60 -0
- package/dist/lib/cli/gate.js.map +1 -0
- package/dist/lib/cli/profiles.d.ts +12 -0
- package/dist/lib/cli/profiles.js +63 -0
- package/dist/lib/cli/profiles.js.map +1 -0
- package/dist/lib/cli/refresh-snapshots.d.ts +15 -0
- package/dist/lib/cli/refresh-snapshots.js +40 -0
- package/dist/lib/cli/refresh-snapshots.js.map +1 -0
- package/dist/lib/compose-prompt.d.ts +1 -1
- package/dist/lib/compose-prompt.js +1 -1
- package/dist/lib/compose-prompt.js.map +1 -1
- package/dist/lib/compose.d.ts +1 -1
- package/dist/lib/compose.js +212 -33
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/context-pack.d.ts +1 -1
- package/dist/lib/context-pack.js +2 -1
- package/dist/lib/context-pack.js.map +1 -1
- package/dist/lib/cost.js +2 -1
- package/dist/lib/cost.js.map +1 -1
- package/dist/lib/domain-packs.d.ts +31 -0
- package/dist/lib/domain-packs.js +261 -0
- package/dist/lib/domain-packs.js.map +1 -0
- package/dist/lib/eval/ab.js.map +1 -0
- package/dist/lib/{audit.d.ts → eval/audit.d.ts} +1 -1
- package/dist/lib/{audit.js → eval/audit.js} +2 -2
- package/dist/lib/eval/audit.js.map +1 -0
- package/dist/lib/{batch-export.js → eval/batch-export.js} +38 -9
- package/dist/lib/eval/batch-export.js.map +1 -0
- package/dist/lib/{benchmark.d.ts → eval/benchmark.d.ts} +1 -1
- package/dist/lib/{benchmark.js → eval/benchmark.js} +4 -4
- package/dist/lib/eval/benchmark.js.map +1 -0
- package/dist/lib/eval/emit-run-record.d.ts +38 -0
- package/dist/lib/eval/emit-run-record.js +37 -0
- package/dist/lib/eval/emit-run-record.js.map +1 -0
- package/dist/lib/{prove.d.ts → eval/prove.d.ts} +2 -2
- package/dist/lib/{prove.js → eval/prove.js} +2 -2
- package/dist/lib/eval/prove.js.map +1 -0
- package/dist/lib/{reproducibility.d.ts → eval/reproducibility.d.ts} +3 -3
- package/dist/lib/eval/reproducibility.js.map +1 -0
- package/dist/lib/{sbom.d.ts → eval/sbom.d.ts} +2 -2
- package/dist/lib/{sbom.js → eval/sbom.js} +5 -2
- package/dist/lib/eval/sbom.js.map +1 -0
- package/dist/lib/fatten.d.ts +2 -2
- package/dist/lib/fatten.js +38 -10
- package/dist/lib/fatten.js.map +1 -1
- package/dist/lib/fs.js +11 -5
- package/dist/lib/fs.js.map +1 -1
- package/dist/lib/held-out-gate.d.ts +88 -0
- package/dist/lib/held-out-gate.js +177 -0
- package/dist/lib/held-out-gate.js.map +1 -0
- package/dist/lib/index.d.ts +24 -13
- package/dist/lib/index.js +17 -8
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/industries.js +2 -2
- package/dist/lib/industries.js.map +1 -1
- package/dist/lib/industry-flows.js +3 -5
- package/dist/lib/industry-flows.js.map +1 -1
- package/dist/lib/keywords.js +31 -21
- package/dist/lib/keywords.js.map +1 -1
- package/dist/lib/llm.js +22 -21
- package/dist/lib/llm.js.map +1 -1
- package/dist/lib/planner/contracts.js +45 -13
- package/dist/lib/planner/contracts.js.map +1 -1
- package/dist/lib/planner/detectors.js +31 -9
- package/dist/lib/planner/detectors.js.map +1 -1
- package/dist/lib/planner/domain-pack-signals.d.ts +6 -0
- package/dist/lib/planner/domain-pack-signals.js +36 -0
- package/dist/lib/planner/domain-pack-signals.js.map +1 -0
- package/dist/lib/planner/implicit-caps.js +12 -2
- package/dist/lib/planner/implicit-caps.js.map +1 -1
- package/dist/lib/planner/partner-first.d.ts +0 -14
- package/dist/lib/planner/partner-first.js +14 -14
- package/dist/lib/planner/partner-first.js.map +1 -1
- package/dist/lib/planner/projects.d.ts +5 -1
- package/dist/lib/planner/projects.js +460 -113
- package/dist/lib/planner/projects.js.map +1 -1
- package/dist/lib/planner/signals.d.ts +9 -0
- package/dist/lib/planner/signals.js +195 -27
- package/dist/lib/planner/signals.js.map +1 -1
- package/dist/lib/product-brief.js +4 -1
- package/dist/lib/product-brief.js.map +1 -1
- package/dist/lib/profile-loader.d.ts +56 -0
- package/dist/lib/profile-loader.js +144 -0
- package/dist/lib/profile-loader.js.map +1 -0
- package/dist/lib/promoter-gates.js +86 -22
- package/dist/lib/promoter-gates.js.map +1 -1
- package/dist/lib/prompt-e2e.d.ts +3 -3
- package/dist/lib/prompt-e2e.js +1 -1
- package/dist/lib/prompt-e2e.js.map +1 -1
- package/dist/lib/prompt-planner.js +428 -88
- package/dist/lib/prompt-planner.js.map +1 -1
- package/dist/lib/prompt-rewriter.d.ts +2 -1
- package/dist/lib/prompt-rewriter.js +6 -3
- package/dist/lib/prompt-rewriter.js.map +1 -1
- package/dist/lib/registry-mirror.d.ts +2 -2
- package/dist/lib/registry-mirror.js +3 -1
- package/dist/lib/registry-mirror.js.map +1 -1
- package/dist/lib/registry.d.ts +6 -6
- package/dist/lib/registry.js +193 -12
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/release.js +7 -4
- package/dist/lib/release.js.map +1 -1
- package/dist/lib/reviewer-route.js +33 -19
- package/dist/lib/reviewer-route.js.map +1 -1
- package/dist/lib/run-canaries.d.ts +102 -0
- package/dist/lib/run-canaries.js +305 -0
- package/dist/lib/run-canaries.js.map +1 -0
- package/dist/lib/run-record-store.d.ts +21 -0
- package/dist/lib/run-record-store.js +61 -0
- package/dist/lib/run-record-store.js.map +1 -0
- package/dist/lib/run-record.d.ts +105 -0
- package/dist/lib/run-record.js +189 -0
- package/dist/lib/run-record.js.map +1 -0
- package/dist/lib/safety/license-check.js +18 -10
- package/dist/lib/safety/license-check.js.map +1 -1
- package/dist/lib/safety/secret-scan.js +15 -1
- package/dist/lib/safety/secret-scan.js.map +1 -1
- package/dist/lib/selection.d.ts +15 -0
- package/dist/lib/selection.js +138 -17
- package/dist/lib/selection.js.map +1 -1
- package/dist/lib/semantic-router.d.ts +5 -1
- package/dist/lib/semantic-router.js +7 -3
- package/dist/lib/semantic-router.js.map +1 -1
- package/dist/lib/snapshot-resolver.d.ts +94 -0
- package/dist/lib/snapshot-resolver.js +228 -0
- package/dist/lib/snapshot-resolver.js.map +1 -0
- package/dist/lib/synthetic/index.js +4 -2
- package/dist/lib/synthetic/index.js.map +1 -1
- package/dist/lib/telemetry/stream.js +3 -1
- package/dist/lib/telemetry/stream.js.map +1 -1
- package/dist/lib/telemetry.d.ts +2 -1
- package/dist/lib/telemetry.js +8 -2
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/template-quality.d.ts +2 -2
- package/dist/lib/template-quality.js +6 -4
- package/dist/lib/template-quality.js.map +1 -1
- package/dist/lib/validate-plan.js +4 -1
- package/dist/lib/validate-plan.js.map +1 -1
- package/dist/lib/validate.d.ts +5 -1
- package/dist/lib/validate.js +340 -4
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/vb-outcomes.d.ts +2 -2
- package/dist/lib/vb-outcomes.js.map +1 -1
- package/dist/lib/version-history.js.map +1 -1
- package/dist/lib/visual-regression.d.ts +2 -2
- package/dist/lib/visual-regression.js.map +1 -1
- package/dist/lib/workspace-presets.d.ts +125 -0
- package/dist/lib/workspace-presets.js +364 -0
- package/dist/lib/workspace-presets.js.map +1 -0
- package/dist/lib/workspace.d.ts +6 -6
- package/dist/lib/workspace.js +8 -7
- package/dist/lib/workspace.js.map +1 -1
- package/dist/training/capability_proposer/propose.d.ts +2 -3
- package/dist/training/capability_proposer/propose.js +26 -15
- package/dist/training/capability_proposer/propose.js.map +1 -1
- package/dist/training/family_proposer/propose.d.ts +2 -3
- package/dist/training/family_proposer/propose.js +275 -42
- package/dist/training/family_proposer/propose.js.map +1 -1
- package/dist/training/routing/train.d.ts +2 -2
- package/dist/training/routing/train.js +9 -6
- package/dist/training/routing/train.js.map +1 -1
- package/dist/training/template_v1/audit.js +5 -3
- package/dist/training/template_v1/audit.js.map +1 -1
- package/dist/training/template_v1/correctness.js +10 -11
- package/dist/training/template_v1/correctness.js.map +1 -1
- package/dist/training/template_v1/harvest.d.ts +6 -6
- package/dist/training/template_v1/harvest.js +1 -3
- package/dist/training/template_v1/harvest.js.map +1 -1
- package/dist/training/template_v1/judge.d.ts +1 -1
- package/dist/training/template_v1/judge.js +7 -4
- package/dist/training/template_v1/judge.js.map +1 -1
- package/dist/training/template_v1/multi-propose.d.ts +3 -3
- package/dist/training/template_v1/multi-propose.js +3 -2
- package/dist/training/template_v1/multi-propose.js.map +1 -1
- package/dist/training/template_v1/run.js +34 -17
- package/dist/training/template_v1/run.js.map +1 -1
- package/dist/training/template_v1/synthesize.js +9 -3
- package/dist/training/template_v1/synthesize.js.map +1 -1
- package/dist/training/variant_b/brief-loader.js +32 -12
- package/dist/training/variant_b/brief-loader.js.map +1 -1
- package/dist/training/variant_b/flow.d.ts +2 -2
- package/dist/training/variant_b/flow.js +2 -2
- package/dist/training/variant_b/flow.js.map +1 -1
- package/dist/training/variant_b/generate.js +8 -4
- package/dist/training/variant_b/generate.js.map +1 -1
- package/dist/training/variant_b/judge.d.ts +2 -3
- package/dist/training/variant_b/judge.js.map +1 -1
- package/dist/training/variant_b/nodes/collect.d.ts +2 -2
- package/dist/training/variant_b/nodes/collect.js.map +1 -1
- package/dist/training/variant_b/nodes/generate.js +12 -3
- package/dist/training/variant_b/nodes/generate.js.map +1 -1
- package/dist/training/variant_b/nodes/judge.js.map +1 -1
- package/dist/training/variant_b/nodes/promote.d.ts +2 -2
- package/dist/training/variant_b/nodes/promote.js.map +1 -1
- package/dist/training/variant_b/nodes/rank.js.map +1 -1
- package/dist/training/variant_b/nodes/train.js +13 -7
- package/dist/training/variant_b/nodes/train.js.map +1 -1
- package/dist/training/variant_b/run-flow.js +1 -1
- package/dist/training/variant_b/run-flow.js.map +1 -1
- package/dist/training/variant_b/train.js +1 -1
- package/dist/training/variant_b/train.js.map +1 -1
- package/dist/types/compose.d.ts +126 -0
- package/dist/types/compose.js +5 -0
- package/dist/types/compose.js.map +1 -0
- package/dist/types/eval.d.ts +89 -0
- package/dist/types/eval.js +5 -0
- package/dist/types/eval.js.map +1 -0
- package/dist/types/ids.d.ts +46 -0
- package/dist/types/ids.js +87 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/planner.d.ts +64 -0
- package/dist/types/planner.js +4 -0
- package/dist/types/planner.js.map +1 -0
- package/dist/types/registry-schemas.generated.d.ts +96 -1
- package/dist/types/registry-schemas.generated.js +2 -2
- package/dist/types/registry-schemas.generated.js.map +1 -1
- package/dist/types/registry.d.ts +243 -0
- package/dist/types/registry.js +4 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types.d.ts +1 -444
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/package.json +107 -51
- package/registry/_schemas/agent.schema.json +101 -0
- package/registry/_schemas/family.schema.json +62 -2
- package/registry/_schemas/layer.schema.json +70 -0
- package/registry/families/agent-debug-ui-ts/files/.env.example +13 -0
- package/registry/families/agent-debug-ui-ts/files/README.md +78 -0
- package/registry/families/agent-debug-ui-ts/files/index.html +12 -0
- package/registry/families/agent-debug-ui-ts/files/package.json +28 -0
- package/registry/families/agent-debug-ui-ts/files/src/App.tsx +224 -0
- package/registry/families/agent-debug-ui-ts/files/src/components/ChatPair.tsx +69 -0
- package/registry/families/agent-debug-ui-ts/files/src/components/EventInspector.tsx +36 -0
- package/registry/families/agent-debug-ui-ts/files/src/components/EventStream.tsx +122 -0
- package/registry/families/agent-debug-ui-ts/files/src/components/ReplayScrubber.tsx +59 -0
- package/registry/families/agent-debug-ui-ts/files/src/components/ToolCallTimeline.tsx +136 -0
- package/registry/families/agent-debug-ui-ts/files/src/lib/event-types.ts +115 -0
- package/registry/families/agent-debug-ui-ts/files/src/lib/sandbox-stream.ts +133 -0
- package/registry/families/agent-debug-ui-ts/files/src/main.tsx +13 -0
- package/registry/families/agent-debug-ui-ts/files/src/styles.css +382 -0
- package/registry/families/agent-debug-ui-ts/files/tsconfig.json +25 -0
- package/registry/families/agent-debug-ui-ts/files/tsconfig.node.json +11 -0
- package/registry/families/agent-debug-ui-ts/files/vite.config.ts +15 -0
- package/registry/families/agent-debug-ui-ts/manifest.json +91 -0
- package/registry/families/agent-eval-harness-py/files/.github/workflows/eval.yml +70 -0
- package/registry/families/agent-eval-harness-py/files/AGENTS.md +135 -0
- package/registry/families/agent-eval-harness-py/files/README.md +145 -0
- package/registry/families/agent-eval-harness-py/files/agent.json +30 -0
- package/registry/families/agent-eval-harness-py/files/pyproject.toml +48 -0
- package/registry/families/agent-eval-harness-py/files/requirements.txt +7 -0
- package/registry/families/agent-eval-harness-py/files/scenarios/__init__.py +1 -0
- package/registry/families/agent-eval-harness-py/files/scenarios/example.py +50 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/__init__.py +57 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/__main__.py +10 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/cli.py +281 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/judges/__init__.py +27 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/judges/example_judge.py +52 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/judges/rubric.py +299 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/regression.py +299 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/runner.py +320 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/sandbox_runner.py +194 -0
- package/registry/families/agent-eval-harness-py/files/src/eval/scorecard.py +192 -0
- package/registry/families/agent-eval-harness-py/files/tests/__init__.py +0 -0
- package/registry/families/agent-eval-harness-py/files/tests/test_regression.py +266 -0
- package/registry/families/agent-eval-harness-py/files/tests/test_runner.py +291 -0
- package/registry/families/agent-eval-harness-py/files/tests/test_sandbox.py +258 -0
- package/registry/families/agent-eval-harness-py/manifest.json +209 -0
- package/registry/families/agent-eval-harness-ts/files/.github/workflows/eval.yml +55 -0
- package/registry/families/agent-eval-harness-ts/files/AGENTS.md +114 -0
- package/registry/families/agent-eval-harness-ts/files/README.md +138 -0
- package/registry/families/agent-eval-harness-ts/files/agent.json +32 -0
- package/registry/families/agent-eval-harness-ts/files/judges/example.judge.ts +23 -0
- package/registry/families/agent-eval-harness-ts/files/package.json +24 -0
- package/registry/families/agent-eval-harness-ts/files/scenarios/.gitkeep +0 -0
- package/registry/families/agent-eval-harness-ts/files/scenarios/example.scenario.ts +34 -0
- package/registry/families/agent-eval-harness-ts/files/src/eval/campaign.ts +137 -0
- package/registry/families/agent-eval-harness-ts/files/src/eval/cli.ts +65 -0
- package/registry/families/agent-eval-harness-ts/files/src/eval/runner.ts +384 -0
- package/registry/families/agent-eval-harness-ts/files/src/eval/scorecard.ts +89 -0
- package/registry/families/agent-eval-harness-ts/files/tests/fixtures/scenarios-bad/missing-thesis.scenario.ts +14 -0
- package/registry/families/agent-eval-harness-ts/files/tests/fixtures/scenarios-good/example.scenario.ts +15 -0
- package/registry/families/agent-eval-harness-ts/files/tests/scenario-loader-import.test.ts +63 -0
- package/registry/families/agent-eval-harness-ts/files/tsconfig.json +24 -0
- package/registry/families/agent-eval-harness-ts/manifest.json +123 -0
- package/registry/families/agent-eval-ui-ts/files/.env.example +12 -0
- package/registry/families/agent-eval-ui-ts/files/README.md +66 -0
- package/registry/families/agent-eval-ui-ts/files/index.html +12 -0
- package/registry/families/agent-eval-ui-ts/files/package.json +30 -0
- package/registry/families/agent-eval-ui-ts/files/src/App.tsx +148 -0
- package/registry/families/agent-eval-ui-ts/files/src/components/RunDiff.tsx +91 -0
- package/registry/families/agent-eval-ui-ts/files/src/components/ScoreRadar.tsx +78 -0
- package/registry/families/agent-eval-ui-ts/files/src/components/TraceDetail.tsx +168 -0
- package/registry/families/agent-eval-ui-ts/files/src/components/TraceList.tsx +98 -0
- package/registry/families/agent-eval-ui-ts/files/src/lib/scoring.ts +124 -0
- package/registry/families/agent-eval-ui-ts/files/src/lib/traces.ts +301 -0
- package/registry/families/agent-eval-ui-ts/files/src/main.tsx +16 -0
- package/registry/families/agent-eval-ui-ts/files/src/styles.css +140 -0
- package/registry/families/agent-eval-ui-ts/files/tsconfig.json +24 -0
- package/registry/families/agent-eval-ui-ts/files/vite.config.ts +64 -0
- package/registry/families/agent-eval-ui-ts/manifest.json +101 -0
- package/registry/families/agent-marketplace-ui-ts/files/.env.example +19 -0
- package/registry/families/agent-marketplace-ui-ts/files/README.md +54 -0
- package/registry/families/agent-marketplace-ui-ts/files/next.config.js +18 -0
- package/registry/families/agent-marketplace-ui-ts/files/package.json +31 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/app/bundles/[id]/page.tsx +78 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/app/deploy/[id]/page.tsx +28 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/app/layout.tsx +35 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/app/page-client.tsx +26 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/app/page.tsx +39 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/components/AgentsMdPreview.tsx +132 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/components/BundleCard.tsx +34 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/components/BundleGrid.tsx +23 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/components/DeployFlow.tsx +263 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/components/SearchFilters.tsx +61 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/lib/catalog.ts +208 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/lib/search.ts +54 -0
- package/registry/families/agent-marketplace-ui-ts/files/src/styles/globals.css +244 -0
- package/registry/families/agent-marketplace-ui-ts/files/tsconfig.json +27 -0
- package/registry/families/agent-marketplace-ui-ts/manifest.json +104 -0
- package/registry/families/agent-research-harness-py/files/.github/workflows/research.yml +45 -0
- package/registry/families/agent-research-harness-py/files/AGENTS.md +87 -0
- package/registry/families/agent-research-harness-py/files/README.md +63 -0
- package/registry/families/agent-research-harness-py/files/agent.json +45 -0
- package/registry/families/agent-research-harness-py/files/hypotheses/README.md +45 -0
- package/registry/families/agent-research-harness-py/files/hypotheses/example.json +29 -0
- package/registry/families/agent-research-harness-py/files/hypotheses/queue.json +1 -0
- package/registry/families/agent-research-harness-py/files/pyproject.toml +33 -0
- package/registry/families/agent-research-harness-py/files/requirements.txt +6 -0
- package/registry/families/agent-research-harness-py/files/src/research/__init__.py +37 -0
- package/registry/families/agent-research-harness-py/files/src/research/__main__.py +6 -0
- package/registry/families/agent-research-harness-py/files/src/research/cli.py +146 -0
- package/registry/families/agent-research-harness-py/files/src/research/proposer.py +140 -0
- package/registry/families/agent-research-harness-py/files/src/research/runner.py +230 -0
- package/registry/families/agent-research-harness-py/files/src/research/sandbox_runner.py +180 -0
- package/registry/families/agent-research-harness-py/files/src/research/screener.py +55 -0
- package/registry/families/agent-research-harness-py/files/src/research/types.py +128 -0
- package/registry/families/agent-research-harness-py/files/src/research/validator.py +305 -0
- package/registry/families/agent-research-harness-py/files/tests/__init__.py +0 -0
- package/registry/families/agent-research-harness-py/files/tests/test_sandbox.py +181 -0
- package/registry/families/agent-research-harness-py/files/tests/test_screener.py +74 -0
- package/registry/families/agent-research-harness-py/files/tests/test_validator.py +250 -0
- package/registry/families/agent-research-harness-py/manifest.json +199 -0
- package/registry/families/agent-research-harness-ts/files/.github/workflows/research.yml +65 -0
- package/registry/families/agent-research-harness-ts/files/AGENTS.md +121 -0
- package/registry/families/agent-research-harness-ts/files/README.md +155 -0
- package/registry/families/agent-research-harness-ts/files/agent.json +31 -0
- package/registry/families/agent-research-harness-ts/files/hypotheses/README.md +79 -0
- package/registry/families/agent-research-harness-ts/files/hypotheses/example.json +18 -0
- package/registry/families/agent-research-harness-ts/files/hypotheses/queue.json +3 -0
- package/registry/families/agent-research-harness-ts/files/package.json +35 -0
- package/registry/families/agent-research-harness-ts/files/src/research/cli.ts +160 -0
- package/registry/families/agent-research-harness-ts/files/src/research/proposer.ts +215 -0
- package/registry/families/agent-research-harness-ts/files/src/research/runner.ts +253 -0
- package/registry/families/agent-research-harness-ts/files/src/research/screener.ts +105 -0
- package/registry/families/agent-research-harness-ts/files/src/research/types.ts +143 -0
- package/registry/families/agent-research-harness-ts/files/src/research/validator.ts +310 -0
- package/registry/families/agent-research-harness-ts/files/tests/research-runner.test.ts +422 -0
- package/registry/families/agent-research-harness-ts/files/tests/screener.test.ts +93 -0
- package/registry/families/agent-research-harness-ts/files/tests/validator.test.ts +149 -0
- package/registry/families/agent-research-harness-ts/files/tsconfig.json +19 -0
- package/registry/families/agent-research-harness-ts/manifest.json +108 -0
- package/registry/families/agent-runtime-account-executive-ts/files/AGENTS.md +66 -0
- package/registry/families/agent-runtime-account-executive-ts/files/README.md +25 -0
- package/registry/families/agent-runtime-account-executive-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-account-executive-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-account-executive-ts/files/methodology/deal-progression.md +40 -0
- package/registry/families/agent-runtime-account-executive-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-account-executive-ts/files/methodology/opportunity-scoring.md +60 -0
- package/registry/families/agent-runtime-account-executive-ts/files/methodology/pipeline-review.md +35 -0
- package/registry/families/agent-runtime-account-executive-ts/manifest.json +151 -0
- package/registry/families/agent-runtime-architect-ts/files/AGENTS.md +66 -0
- package/registry/families/agent-runtime-architect-ts/files/README.md +29 -0
- package/registry/families/agent-runtime-architect-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-architect-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-architect-ts/files/methodology/architecture-decision-record.md +157 -0
- package/registry/families/agent-runtime-architect-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-architect-ts/files/methodology/system-design-canvas.md +33 -0
- package/registry/families/agent-runtime-architect-ts/files/methodology/trade-off-analysis.md +146 -0
- package/registry/families/agent-runtime-architect-ts/manifest.json +146 -0
- package/registry/families/agent-runtime-auditor-ts/files/AGENTS.md +99 -0
- package/registry/families/agent-runtime-auditor-ts/files/README.md +28 -0
- package/registry/families/agent-runtime-auditor-ts/files/agent.json +36 -0
- package/registry/families/agent-runtime-auditor-ts/files/methodology/control-walkthrough.md +80 -0
- package/registry/families/agent-runtime-auditor-ts/files/methodology/deficiency-write-up.md +101 -0
- package/registry/families/agent-runtime-auditor-ts/files/methodology/evidence-request-list.md +84 -0
- package/registry/families/agent-runtime-auditor-ts/files/methodology/index.json +22 -0
- package/registry/families/agent-runtime-auditor-ts/manifest.json +96 -0
- package/registry/families/agent-runtime-biology-research-ts/files/AGENTS.md +85 -0
- package/registry/families/agent-runtime-biology-research-ts/files/README.md +46 -0
- package/registry/families/agent-runtime-biology-research-ts/files/methodology/experimental-design.md +134 -0
- package/registry/families/agent-runtime-biology-research-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-biology-research-ts/files/methodology/literature-search.md +105 -0
- package/registry/families/agent-runtime-biology-research-ts/files/methodology/sequence-analysis.md +109 -0
- package/registry/families/agent-runtime-biology-research-ts/manifest.json +89 -0
- package/registry/families/agent-runtime-business-partner-ts/files/AGENTS.md +129 -0
- package/registry/families/agent-runtime-business-partner-ts/files/README.md +94 -0
- package/registry/families/agent-runtime-business-partner-ts/files/TOOLS.md +32 -0
- package/registry/families/agent-runtime-business-partner-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-business-partner-ts/files/methodology/decision-journal.md +149 -0
- package/registry/families/agent-runtime-business-partner-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-business-partner-ts/files/methodology/okr-design.md +130 -0
- package/registry/families/agent-runtime-business-partner-ts/files/methodology/weekly-review-protocol.md +103 -0
- package/registry/families/agent-runtime-business-partner-ts/manifest.json +194 -0
- package/registry/families/agent-runtime-career-coach-ts/files/AGENTS.md +62 -0
- package/registry/families/agent-runtime-career-coach-ts/files/README.md +39 -0
- package/registry/families/agent-runtime-career-coach-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-career-coach-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-career-coach-ts/files/methodology/decision-framework.md +36 -0
- package/registry/families/agent-runtime-career-coach-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-career-coach-ts/files/methodology/market-positioning.md +38 -0
- package/registry/families/agent-runtime-career-coach-ts/files/methodology/self-assessment.md +37 -0
- package/registry/families/agent-runtime-career-coach-ts/manifest.json +142 -0
- package/registry/families/agent-runtime-chef-ts/files/AGENTS.md +75 -0
- package/registry/families/agent-runtime-chef-ts/files/README.md +35 -0
- package/registry/families/agent-runtime-chef-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-chef-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-chef-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-chef-ts/files/methodology/meal-planning.md +90 -0
- package/registry/families/agent-runtime-chef-ts/files/methodology/recipe-development.md +96 -0
- package/registry/families/agent-runtime-chef-ts/files/methodology/technique-guidance.md +90 -0
- package/registry/families/agent-runtime-chef-ts/manifest.json +148 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/AGENTS.md +80 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/README.md +28 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/TOOLS.md +32 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/methodology/compound-data-extraction.md +104 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/methodology/literature-search.md +101 -0
- package/registry/families/agent-runtime-chemistry-research-ts/files/methodology/reaction-planning.md +125 -0
- package/registry/families/agent-runtime-chemistry-research-ts/manifest.json +156 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/AGENTS.md +86 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/README.md +52 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/methodology/channel-experiment-design.md +101 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/methodology/icp-deep-dive.md +99 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/files/methodology/positioning-canvas.md +88 -0
- package/registry/families/agent-runtime-cmo-advisor-ts/manifest.json +184 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/AGENTS.md +66 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/README.md +17 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/methodology/application-strategy.md +33 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/methodology/essay-coaching.md +146 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/methodology/financial-aid-navigation.md +153 -0
- package/registry/families/agent-runtime-college-counselor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-college-counselor-ts/manifest.json +144 -0
- package/registry/families/agent-runtime-cs-research-ts/files/AGENTS.md +62 -0
- package/registry/families/agent-runtime-cs-research-ts/files/README.md +35 -0
- package/registry/families/agent-runtime-cs-research-ts/files/TOOLS.md +33 -0
- package/registry/families/agent-runtime-cs-research-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-cs-research-ts/files/methodology/citation-graph-exploration.md +36 -0
- package/registry/families/agent-runtime-cs-research-ts/files/methodology/index.json +32 -0
- package/registry/families/agent-runtime-cs-research-ts/files/methodology/literature-survey.md +40 -0
- package/registry/families/agent-runtime-cs-research-ts/files/methodology/paper-summarization.md +120 -0
- package/registry/families/agent-runtime-cs-research-ts/files/methodology/research-question-formulation.md +132 -0
- package/registry/families/agent-runtime-cs-research-ts/manifest.json +157 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/AGENTS.md +58 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/README.md +29 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/methodology/debug-code.md +33 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/methodology/explain-concept.md +34 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/methodology/generate-exercise.md +44 -0
- package/registry/families/agent-runtime-cs-tutor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-cs-tutor-ts/manifest.json +145 -0
- package/registry/families/agent-runtime-customer-success-ts/files/AGENTS.md +64 -0
- package/registry/families/agent-runtime-customer-success-ts/files/README.md +32 -0
- package/registry/families/agent-runtime-customer-success-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-customer-success-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-customer-success-ts/files/methodology/escalation-triage.md +44 -0
- package/registry/families/agent-runtime-customer-success-ts/files/methodology/health-score.md +41 -0
- package/registry/families/agent-runtime-customer-success-ts/files/methodology/index.json +32 -0
- package/registry/families/agent-runtime-customer-success-ts/files/methodology/qbr-framework.md +39 -0
- package/registry/families/agent-runtime-customer-success-ts/files/methodology/retention-playbook.md +39 -0
- package/registry/families/agent-runtime-customer-success-ts/manifest.json +156 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/AGENTS.md +62 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/README.md +34 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/methodology/ad-hoc-query.md +39 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/methodology/dashboard-design.md +127 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/methodology/data-quality-audit.md +138 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/methodology/exploratory-analysis.md +33 -0
- package/registry/families/agent-runtime-data-analyst-ts/files/methodology/index.json +32 -0
- package/registry/families/agent-runtime-data-analyst-ts/manifest.json +154 -0
- package/registry/families/agent-runtime-designer-ts/files/AGENTS.md +60 -0
- package/registry/families/agent-runtime-designer-ts/files/README.md +25 -0
- package/registry/families/agent-runtime-designer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-designer-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-designer-ts/files/methodology/design-critique.md +140 -0
- package/registry/families/agent-runtime-designer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-designer-ts/files/methodology/prototyping-guide.md +32 -0
- package/registry/families/agent-runtime-designer-ts/files/methodology/ux-strategy.md +39 -0
- package/registry/families/agent-runtime-designer-ts/manifest.json +143 -0
- package/registry/families/agent-runtime-devops-ts/files/AGENTS.md +66 -0
- package/registry/families/agent-runtime-devops-ts/files/README.md +30 -0
- package/registry/families/agent-runtime-devops-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-devops-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-devops-ts/files/methodology/iac-review.md +39 -0
- package/registry/families/agent-runtime-devops-ts/files/methodology/incident-response-protocol.md +36 -0
- package/registry/families/agent-runtime-devops-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-devops-ts/files/methodology/runbook-automation.md +32 -0
- package/registry/families/agent-runtime-devops-ts/manifest.json +149 -0
- package/registry/families/agent-runtime-doctor-ts/files/AGENTS.md +70 -0
- package/registry/families/agent-runtime-doctor-ts/files/README.md +33 -0
- package/registry/families/agent-runtime-doctor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-doctor-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-doctor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-doctor-ts/files/methodology/medical-reference.md +42 -0
- package/registry/families/agent-runtime-doctor-ts/files/methodology/symptom-explainer.md +34 -0
- package/registry/families/agent-runtime-doctor-ts/files/methodology/treatment-overview.md +36 -0
- package/registry/families/agent-runtime-doctor-ts/manifest.json +143 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/AGENTS.md +64 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/README.md +18 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/agent.json +41 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/methodology/incident-postmortem.md +124 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/methodology/index.json +32 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/methodology/one-on-one-cadence.md +109 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/methodology/sprint-planning.md +122 -0
- package/registry/families/agent-runtime-engineering-manager-ts/files/methodology/tech-debt-triage.md +113 -0
- package/registry/families/agent-runtime-engineering-manager-ts/manifest.json +154 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/AGENTS.md +62 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/README.md +24 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/methodology/argument-structuring.md +30 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/methodology/revision-cycle.md +32 -0
- package/registry/families/agent-runtime-essay-coach-ts/files/methodology/thesis-development.md +38 -0
- package/registry/families/agent-runtime-essay-coach-ts/manifest.json +145 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/AGENTS.md +67 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/README.md +19 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/methodology/equity-research.md +145 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/methodology/financial-modeling.md +132 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-financial-analyst-ts/files/methodology/investment-memo.md +146 -0
- package/registry/families/agent-runtime-financial-analyst-ts/manifest.json +145 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/AGENTS.md +141 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/README.md +76 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/methodology/deload-prompt.md +106 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/methodology/form-check-protocol.md +136 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/methodology/index.json +26 -0
- package/registry/families/agent-runtime-fitness-coach-ts/files/methodology/weekly-program.md +115 -0
- package/registry/families/agent-runtime-fitness-coach-ts/manifest.json +193 -0
- package/registry/families/agent-runtime-friend-ts/files/AGENTS.md +82 -0
- package/registry/families/agent-runtime-friend-ts/files/README.md +32 -0
- package/registry/families/agent-runtime-friend-ts/files/agent.json +35 -0
- package/registry/families/agent-runtime-friend-ts/files/methodology/check-in-protocol.md +54 -0
- package/registry/families/agent-runtime-friend-ts/files/methodology/index.json +22 -0
- package/registry/families/agent-runtime-friend-ts/files/methodology/rapport-warm.md +50 -0
- package/registry/families/agent-runtime-friend-ts/files/methodology/topic-pivot.md +53 -0
- package/registry/families/agent-runtime-friend-ts/manifest.json +92 -0
- package/registry/families/agent-runtime-game-designer-ts/files/AGENTS.md +56 -0
- package/registry/families/agent-runtime-game-designer-ts/files/README.md +32 -0
- package/registry/families/agent-runtime-game-designer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-game-designer-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-game-designer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-game-designer-ts/files/methodology/mechanic-design.md +110 -0
- package/registry/families/agent-runtime-game-designer-ts/files/methodology/narrative-system.md +135 -0
- package/registry/families/agent-runtime-game-designer-ts/files/methodology/player-loop.md +143 -0
- package/registry/families/agent-runtime-game-designer-ts/manifest.json +150 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/AGENTS.md +60 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/README.md +17 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/methodology/deadline-tracker.md +140 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/methodology/grant-proposal-canvas.md +37 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-grant-writer-ts/files/methodology/reporting-template.md +30 -0
- package/registry/families/agent-runtime-grant-writer-ts/manifest.json +148 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/AGENTS.md +59 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/README.md +22 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/methodology/historiographic-debate.md +123 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/methodology/source-analysis.md +117 -0
- package/registry/families/agent-runtime-history-tutor-ts/files/methodology/timeline-reasoning.md +134 -0
- package/registry/families/agent-runtime-history-tutor-ts/manifest.json +145 -0
- package/registry/families/agent-runtime-illustrator-ts/files/AGENTS.md +64 -0
- package/registry/families/agent-runtime-illustrator-ts/files/README.md +29 -0
- package/registry/families/agent-runtime-illustrator-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-illustrator-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-illustrator-ts/files/methodology/art-direction-canvas.md +31 -0
- package/registry/families/agent-runtime-illustrator-ts/files/methodology/composition-guide.md +36 -0
- package/registry/families/agent-runtime-illustrator-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-illustrator-ts/files/methodology/style-development.md +39 -0
- package/registry/families/agent-runtime-illustrator-ts/manifest.json +146 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/AGENTS.md +111 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/README.md +101 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/methodology/daily-conversation-prompt.md +103 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/methodology/index.json +27 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/methodology/shadowing-protocol.md +102 -0
- package/registry/families/agent-runtime-language-tutor-ts/files/methodology/vocabulary-drill.md +121 -0
- package/registry/families/agent-runtime-language-tutor-ts/manifest.json +187 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/AGENTS.md +114 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/README.md +77 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/methodology/contract-redline-protocol.md +111 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/methodology/msa-checklist.md +190 -0
- package/registry/families/agent-runtime-legal-counsel-ts/files/methodology/nda-checklist.md +122 -0
- package/registry/families/agent-runtime-legal-counsel-ts/manifest.json +178 -0
- package/registry/families/agent-runtime-math-research-ts/files/AGENTS.md +67 -0
- package/registry/families/agent-runtime-math-research-ts/files/README.md +18 -0
- package/registry/families/agent-runtime-math-research-ts/files/TOOLS.md +32 -0
- package/registry/families/agent-runtime-math-research-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-math-research-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-math-research-ts/files/methodology/literature-review.md +106 -0
- package/registry/families/agent-runtime-math-research-ts/files/methodology/mathematical-reasoning.md +126 -0
- package/registry/families/agent-runtime-math-research-ts/files/methodology/proof-verification.md +140 -0
- package/registry/families/agent-runtime-math-research-ts/manifest.json +150 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/AGENTS.md +70 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/README.md +37 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/methodology/concept-explanation.md +67 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/methodology/problem-generation.md +47 -0
- package/registry/families/agent-runtime-math-tutor-ts/files/methodology/step-by-step-solution.md +58 -0
- package/registry/families/agent-runtime-math-tutor-ts/manifest.json +143 -0
- package/registry/families/agent-runtime-mediator-ts/files/AGENTS.md +75 -0
- package/registry/families/agent-runtime-mediator-ts/files/README.md +30 -0
- package/registry/families/agent-runtime-mediator-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-mediator-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-mediator-ts/files/methodology/agreement-drafting.md +36 -0
- package/registry/families/agent-runtime-mediator-ts/files/methodology/de-escalation-protocol.md +41 -0
- package/registry/families/agent-runtime-mediator-ts/files/methodology/index.json +26 -0
- package/registry/families/agent-runtime-mediator-ts/files/methodology/structured-dialogue.md +42 -0
- package/registry/families/agent-runtime-mediator-ts/manifest.json +147 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/AGENTS.md +74 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/README.md +26 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/methodology/guided-session.md +33 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/methodology/index.json +26 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/methodology/mindfulness-check.md +139 -0
- package/registry/families/agent-runtime-meditation-coach-ts/files/methodology/technique-cue.md +141 -0
- package/registry/families/agent-runtime-meditation-coach-ts/manifest.json +148 -0
- package/registry/families/agent-runtime-ml-research-ts/files/AGENTS.md +71 -0
- package/registry/families/agent-runtime-ml-research-ts/files/README.md +19 -0
- package/registry/families/agent-runtime-ml-research-ts/files/TOOLS.md +32 -0
- package/registry/families/agent-runtime-ml-research-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-ml-research-ts/files/methodology/experiment-design.md +141 -0
- package/registry/families/agent-runtime-ml-research-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-ml-research-ts/files/methodology/literature-review.md +115 -0
- package/registry/families/agent-runtime-ml-research-ts/files/methodology/result-interpretation.md +141 -0
- package/registry/families/agent-runtime-ml-research-ts/manifest.json +149 -0
- package/registry/families/agent-runtime-music-producer-ts/files/AGENTS.md +55 -0
- package/registry/families/agent-runtime-music-producer-ts/files/README.md +60 -0
- package/registry/families/agent-runtime-music-producer-ts/files/TOOLS.md +40 -0
- package/registry/families/agent-runtime-music-producer-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-music-producer-ts/files/methodology/arrangement-review.md +83 -0
- package/registry/families/agent-runtime-music-producer-ts/files/methodology/index.json +29 -0
- package/registry/families/agent-runtime-music-producer-ts/files/methodology/listening-prompt.md +78 -0
- package/registry/families/agent-runtime-music-producer-ts/files/methodology/mix-feedback.md +74 -0
- package/registry/families/agent-runtime-music-producer-ts/manifest.json +160 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/AGENTS.md +109 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/README.md +76 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/methodology/beat-sheet-review.md +136 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/methodology/scene-card-protocol.md +104 -0
- package/registry/families/agent-runtime-novelist-coach-ts/files/methodology/voice-audit.md +123 -0
- package/registry/families/agent-runtime-novelist-coach-ts/manifest.json +194 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/AGENTS.md +73 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/README.md +33 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/methodology/dietary-assessment.md +153 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/methodology/macro-targets.md +171 -0
- package/registry/families/agent-runtime-nutritionist-ts/files/methodology/meal-plan.md +33 -0
- package/registry/families/agent-runtime-nutritionist-ts/manifest.json +145 -0
- package/registry/families/agent-runtime-pentester-ts/files/AGENTS.md +66 -0
- package/registry/families/agent-runtime-pentester-ts/files/README.md +24 -0
- package/registry/families/agent-runtime-pentester-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-pentester-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-pentester-ts/files/methodology/ctf-coaching.md +34 -0
- package/registry/families/agent-runtime-pentester-ts/files/methodology/exploit-analysis.md +31 -0
- package/registry/families/agent-runtime-pentester-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-pentester-ts/files/methodology/vulnerability-research.md +35 -0
- package/registry/families/agent-runtime-pentester-ts/manifest.json +152 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/AGENTS.md +77 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/README.md +26 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/methodology/adverse-effect-monitoring.md +155 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/methodology/dosing-guidance.md +41 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/methodology/drug-information.md +47 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/methodology/drug-interaction-check.md +35 -0
- package/registry/families/agent-runtime-pharmacist-ts/files/methodology/index.json +32 -0
- package/registry/families/agent-runtime-pharmacist-ts/manifest.json +156 -0
- package/registry/families/agent-runtime-photographer-ts/files/AGENTS.md +55 -0
- package/registry/families/agent-runtime-photographer-ts/files/README.md +35 -0
- package/registry/families/agent-runtime-photographer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-photographer-ts/files/agent.json +40 -0
- package/registry/families/agent-runtime-photographer-ts/files/methodology/composition-canvas.md +36 -0
- package/registry/families/agent-runtime-photographer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-photographer-ts/files/methodology/lighting-setup-design.md +34 -0
- package/registry/families/agent-runtime-photographer-ts/files/methodology/post-production-workflow.md +32 -0
- package/registry/families/agent-runtime-photographer-ts/manifest.json +148 -0
- package/registry/families/agent-runtime-physics-research-ts/files/AGENTS.md +69 -0
- package/registry/families/agent-runtime-physics-research-ts/files/README.md +26 -0
- package/registry/families/agent-runtime-physics-research-ts/files/agent.json +36 -0
- package/registry/families/agent-runtime-physics-research-ts/files/methodology/citation-analysis.md +110 -0
- package/registry/families/agent-runtime-physics-research-ts/files/methodology/experimental-design.md +129 -0
- package/registry/families/agent-runtime-physics-research-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-physics-research-ts/files/methodology/literature-search.md +113 -0
- package/registry/families/agent-runtime-physics-research-ts/files/templates/citation-analysis.md +37 -0
- package/registry/families/agent-runtime-physics-research-ts/files/templates/experimental-design.md +45 -0
- package/registry/families/agent-runtime-physics-research-ts/files/templates/index.json +25 -0
- package/registry/families/agent-runtime-physics-research-ts/files/templates/literature-search.md +32 -0
- package/registry/families/agent-runtime-physics-research-ts/files/wrangler.toml +22 -0
- package/registry/families/agent-runtime-physics-research-ts/manifest.json +162 -0
- package/registry/families/agent-runtime-product-manager-ts/files/AGENTS.md +58 -0
- package/registry/families/agent-runtime-product-manager-ts/files/README.md +30 -0
- package/registry/families/agent-runtime-product-manager-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-product-manager-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-product-manager-ts/files/methodology/discovery-cycle.md +38 -0
- package/registry/families/agent-runtime-product-manager-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-product-manager-ts/files/methodology/prioritization-framework.md +41 -0
- package/registry/families/agent-runtime-product-manager-ts/files/methodology/product-strategy-canvas.md +42 -0
- package/registry/families/agent-runtime-product-manager-ts/manifest.json +144 -0
- package/registry/families/agent-runtime-real-estate-ts/files/AGENTS.md +162 -0
- package/registry/families/agent-runtime-real-estate-ts/files/README.md +80 -0
- package/registry/families/agent-runtime-real-estate-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-real-estate-ts/files/agent.json +37 -0
- package/registry/families/agent-runtime-real-estate-ts/files/methodology/cap-rate-worksheet.md +180 -0
- package/registry/families/agent-runtime-real-estate-ts/files/methodology/comp-analysis.md +137 -0
- package/registry/families/agent-runtime-real-estate-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-real-estate-ts/files/methodology/offer-strategy.md +169 -0
- package/registry/families/agent-runtime-real-estate-ts/manifest.json +178 -0
- package/registry/families/agent-runtime-recruiter-ts/files/AGENTS.md +128 -0
- package/registry/families/agent-runtime-recruiter-ts/files/README.md +82 -0
- package/registry/families/agent-runtime-recruiter-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-recruiter-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-recruiter-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-recruiter-ts/files/methodology/interview-loop-design.md +135 -0
- package/registry/families/agent-runtime-recruiter-ts/files/methodology/jd-drafting-protocol.md +124 -0
- package/registry/families/agent-runtime-recruiter-ts/files/methodology/screening-rubric.md +118 -0
- package/registry/families/agent-runtime-recruiter-ts/manifest.json +192 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/AGENTS.md +185 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/README.md +90 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/TOOLS.md +30 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/methodology/check-in-protocol.md +129 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/methodology/communication-tool-practice.md +175 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/methodology/conflict-pattern-naming.md +193 -0
- package/registry/families/agent-runtime-relationship-coach-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-relationship-coach-ts/manifest.json +224 -0
- package/registry/families/agent-runtime-research/files/AGENTS.md +56 -0
- package/registry/families/agent-runtime-research/files/README.md +45 -0
- package/registry/families/agent-runtime-research/files/TOOLS.md +22 -0
- package/registry/families/agent-runtime-research/files/agent.json +37 -0
- package/registry/families/agent-runtime-research/files/methodology/index.json +18 -0
- package/registry/families/agent-runtime-research/files/methodology/literature-survey.md +59 -0
- package/registry/families/agent-runtime-research/files/methodology/proposal-drafting.md +63 -0
- package/registry/families/agent-runtime-research/manifest.json +190 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/AGENTS.md +63 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/README.md +37 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/methodology/competitive-technical-positioning.md +39 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/methodology/demo-script.md +36 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-sales-engineer-ts/files/methodology/poc-design.md +43 -0
- package/registry/families/agent-runtime-sales-engineer-ts/manifest.json +148 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/AGENTS.md +69 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/README.md +25 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/agent.json +34 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/methodology/beat-out-protocol.md +58 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/methodology/index.json +22 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/methodology/logline-sharpener.md +52 -0
- package/registry/families/agent-runtime-screenwriter-ts/files/methodology/scene-rewrite-pass.md +61 -0
- package/registry/families/agent-runtime-screenwriter-ts/manifest.json +90 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/AGENTS.md +70 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/README.md +24 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/agent.json +39 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/methodology/security-architecture-review.md +138 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/methodology/threat-modeling.md +105 -0
- package/registry/families/agent-runtime-security-engineer-ts/files/methodology/vulnerability-triage.md +121 -0
- package/registry/families/agent-runtime-security-engineer-ts/manifest.json +144 -0
- package/registry/families/agent-runtime-tax-ts/files/AGENTS.md +79 -0
- package/registry/families/agent-runtime-tax-ts/files/README.md +49 -0
- package/registry/families/agent-runtime-tax-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-tax-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-tax-ts/files/methodology/deadlines.md +91 -0
- package/registry/families/agent-runtime-tax-ts/files/methodology/filing-1040.md +119 -0
- package/registry/families/agent-runtime-tax-ts/files/methodology/index.json +27 -0
- package/registry/families/agent-runtime-tax-ts/files/methodology/refusal-protocol.md +98 -0
- package/registry/families/agent-runtime-tax-ts/manifest.json +185 -0
- package/registry/families/agent-runtime-therapist-ts/files/AGENTS.md +82 -0
- package/registry/families/agent-runtime-therapist-ts/files/README.md +51 -0
- package/registry/families/agent-runtime-therapist-ts/files/TOOLS.md +31 -0
- package/registry/families/agent-runtime-therapist-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-therapist-ts/files/methodology/escalation-protocol.md +146 -0
- package/registry/families/agent-runtime-therapist-ts/files/methodology/index.json +35 -0
- package/registry/families/agent-runtime-therapist-ts/files/methodology/listening-protocol.md +76 -0
- package/registry/families/agent-runtime-therapist-ts/files/methodology/screener-gad7.md +119 -0
- package/registry/families/agent-runtime-therapist-ts/files/methodology/screener-phq9.md +126 -0
- package/registry/families/agent-runtime-therapist-ts/manifest.json +197 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/AGENTS.md +76 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/README.md +15 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/TOOLS.md +23 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/methodology/budget-optimization.md +42 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/methodology/itinerary-design.md +38 -0
- package/registry/families/agent-runtime-travel-planner-ts/files/methodology/logistics-check.md +54 -0
- package/registry/families/agent-runtime-travel-planner-ts/manifest.json +130 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/AGENTS.md +136 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/README.md +94 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/methodology/emergency-triage.md +147 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/methodology/husbandry-reference.md +111 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/methodology/index.json +28 -0
- package/registry/families/agent-runtime-veterinarian-ts/files/methodology/vaccination-framework.md +119 -0
- package/registry/families/agent-runtime-veterinarian-ts/manifest.json +183 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/AGENTS.md +123 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/README.md +75 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/TOOLS.md +24 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/agent.json +38 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/methodology/allocation-review.md +147 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/methodology/index.json +25 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/methodology/retirement-projection.md +186 -0
- package/registry/families/agent-runtime-wealth-manager-ts/files/methodology/tax-loss-harvest-protocol.md +178 -0
- package/registry/families/agent-runtime-wealth-manager-ts/manifest.json +194 -0
- package/registry/families/agent-service-ts/files/package.json +3 -1
- package/registry/families/agent-swarm-ts/files/package.json +3 -1
- package/registry/families/agent-swarm-ts/manifest.json +1 -1
- package/registry/families/agent-with-ui-ts/files/README.md +107 -0
- package/registry/families/agent-with-ui-ts/files/index.html +12 -0
- package/registry/families/agent-with-ui-ts/files/package.json +31 -0
- package/registry/families/agent-with-ui-ts/files/postcss.config.cjs +6 -0
- package/registry/families/agent-with-ui-ts/files/src/App.tsx +147 -0
- package/registry/families/agent-with-ui-ts/files/src/index.css +12 -0
- package/registry/families/agent-with-ui-ts/files/src/main.tsx +13 -0
- package/registry/families/agent-with-ui-ts/files/tailwind.config.cjs +8 -0
- package/registry/families/agent-with-ui-ts/files/tsconfig.json +24 -0
- package/registry/families/agent-with-ui-ts/files/vite.config.ts +15 -0
- package/registry/families/agent-with-ui-ts/manifest.json +81 -0
- package/registry/families/angular-ts/files/package.json +3 -1
- package/registry/families/api-service/files/package.json +4 -0
- package/registry/families/arkworks-prover/files/Cargo.toml +1 -1
- package/registry/families/astro-static/files/package.json +3 -1
- package/registry/families/browser-extension-ts/files/package.json +4 -0
- package/registry/families/bun-http/files/package.json +3 -1
- package/registry/families/cli-ts/files/package.json +3 -1
- package/registry/families/cloudflare-worker-ts/files/package.json +3 -1
- package/registry/families/crm-backend/files/package.json +10 -2
- package/registry/families/ecommerce-headless/files/package.json +10 -2
- package/registry/families/electron-desktop-ts/files/package.json +3 -1
- package/registry/families/electron-native-os/files/package.json +3 -1
- package/registry/families/eleventy-static/files/package.json +3 -1
- package/registry/families/evm-infra-ts/files/package.json +4 -0
- package/registry/families/expo-react-native-ts/files/package.json +3 -1
- package/registry/families/expo-react-native-ts/manifest.json +17 -2
- package/registry/families/expo-rn-rich/files/package.json +3 -1
- package/registry/families/fhenix-contracts/files/package.json +4 -0
- package/registry/families/fhenix-contracts/manifest.json +53 -0
- package/registry/families/fhenix-foundry/manifest.json +84 -0
- package/registry/families/fhevm-contracts/files/package.json +4 -0
- package/registry/families/fhevm-contracts/manifest.json +53 -0
- package/registry/families/fintech-ledger-backend/files/package.json +3 -1
- package/registry/families/forge-contracts/manifest.json +3 -0
- package/registry/families/fraud-ops-console/files/package.json +3 -1
- package/registry/families/frontend-static/files/package.json +3 -1
- package/registry/families/fullstack-ts/files/package.json +3 -1
- package/registry/families/gdpr-compliance-pack/files/package.json +4 -0
- package/registry/families/hardhat-contracts/files/package.json +3 -1
- package/registry/families/healthcare-hipaa-backend/files/package.json +3 -1
- package/registry/families/hipaa-compliance-pack/files/package.json +4 -0
- package/registry/families/hls-origin/files/package.json +3 -1
- package/registry/families/k12-edtech/files/package.json +10 -2
- package/registry/families/kyc-onboarding/files/package.json +4 -0
- package/registry/families/legal-case-mgmt/files/package.json +10 -2
- package/registry/families/livekit-sfu/files/package.json +3 -1
- package/registry/families/mcp-server-ts/files/package.json +5 -1
- package/registry/families/multi-agent-creative-studio-ts/files/AGENTS.md +367 -0
- package/registry/families/multi-agent-creative-studio-ts/files/README.md +86 -0
- package/registry/families/multi-agent-creative-studio-ts/files/agent.json +71 -0
- package/registry/families/multi-agent-creative-studio-ts/files/agents.json +70 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/illustrator/AGENTS.md +168 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/illustrator/methodology/color-palette-design.md +180 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/illustrator/methodology/composition-canvas.md +145 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/illustrator/methodology/storyboard-protocol.md +169 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/music-producer/AGENTS.md +141 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/music-producer/methodology/arrangement-review.md +122 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/music-producer/methodology/mix-feedback.md +110 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/music-producer/methodology/needle-drop-suggestions.md +147 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/novelist-coach/AGENTS.md +153 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/novelist-coach/methodology/scene-card-system.md +133 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/novelist-coach/methodology/voice-audit.md +155 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/screenwriter/AGENTS.md +147 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/screenwriter/methodology/beat-out-protocol.md +123 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/screenwriter/methodology/logline-sharpener.md +111 -0
- package/registry/families/multi-agent-creative-studio-ts/files/roles/screenwriter/methodology/scene-rewrite-pass.md +125 -0
- package/registry/families/multi-agent-creative-studio-ts/manifest.json +212 -0
- package/registry/families/multi-agent-legal-ops-ts/files/AGENTS.md +404 -0
- package/registry/families/multi-agent-legal-ops-ts/files/README.md +151 -0
- package/registry/families/multi-agent-legal-ops-ts/files/agent.json +63 -0
- package/registry/families/multi-agent-legal-ops-ts/files/agents.json +53 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/auditor/AGENTS.md +187 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/auditor/methodology/control-walkthrough.md +142 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/auditor/methodology/deficiency-write-up.md +148 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/legal-counsel/AGENTS.md +186 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/legal-counsel/methodology/contract-redline.md +163 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/legal-counsel/methodology/nda-msa-review.md +273 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/legal-counsel/methodology/regulatory-research.md +129 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/paralegal-intake/AGENTS.md +149 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/paralegal-intake/methodology/conflict-check.md +85 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/paralegal-intake/methodology/fact-pattern-summary.md +101 -0
- package/registry/families/multi-agent-legal-ops-ts/files/roles/paralegal-intake/methodology/intake-checklist.md +71 -0
- package/registry/families/multi-agent-legal-ops-ts/manifest.json +214 -0
- package/registry/families/multi-agent-product-ops-ts/files/AGENTS.md +325 -0
- package/registry/families/multi-agent-product-ops-ts/files/README.md +66 -0
- package/registry/families/multi-agent-product-ops-ts/files/agent.json +69 -0
- package/registry/families/multi-agent-product-ops-ts/files/agents.json +70 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/customer-success/AGENTS.md +97 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/customer-success/methodology/churn-risk-analysis.md +113 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/customer-success/methodology/qbr-prep.md +103 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/designer/AGENTS.md +90 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/designer/methodology/design-critique.md +76 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/designer/methodology/ux-strategy.md +86 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/eng-manager/AGENTS.md +99 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/eng-manager/methodology/sprint-planning.md +102 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/eng-manager/methodology/tech-feasibility-scoping.md +88 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/pm/AGENTS.md +87 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/pm/methodology/discovery-cycle.md +76 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/pm/methodology/prd-template.md +94 -0
- package/registry/families/multi-agent-product-ops-ts/files/roles/pm/methodology/prioritization-rice.md +94 -0
- package/registry/families/multi-agent-product-ops-ts/manifest.json +188 -0
- package/registry/families/multi-agent-research-lab-ts/files/AGENTS.md +352 -0
- package/registry/families/multi-agent-research-lab-ts/files/README.md +84 -0
- package/registry/families/multi-agent-research-lab-ts/files/agent.json +70 -0
- package/registry/families/multi-agent-research-lab-ts/files/agents.json +70 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/biology-researcher/AGENTS.md +140 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/biology-researcher/methodology/bioinformatics-survey.md +207 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/biology-researcher/methodology/protein-structure-analysis.md +185 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/chemistry-researcher/AGENTS.md +127 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/chemistry-researcher/methodology/crossref-literature-search.md +167 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/chemistry-researcher/methodology/reaction-mechanism-analysis.md +180 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/lab-director/AGENTS.md +156 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/lab-director/methodology/cross-domain-synthesis.md +150 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/lab-director/methodology/literature-triage.md +158 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/lab-director/methodology/research-question-formulation.md +190 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/physics-researcher/AGENTS.md +122 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/physics-researcher/methodology/arxiv-literature-search.md +149 -0
- package/registry/families/multi-agent-research-lab-ts/files/roles/physics-researcher/methodology/experimental-design.md +194 -0
- package/registry/families/multi-agent-research-lab-ts/manifest.json +223 -0
- package/registry/families/multi-agent-startup-team-ts/files/AGENTS.md +360 -0
- package/registry/families/multi-agent-startup-team-ts/files/README.md +200 -0
- package/registry/families/multi-agent-startup-team-ts/files/agent.json +78 -0
- package/registry/families/multi-agent-startup-team-ts/files/agents.json +87 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/ceo/AGENTS.md +157 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/ceo/methodology/decision-journal.md +176 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/ceo/methodology/okr-design.md +181 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/ceo/methodology/weekly-review.md +150 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cfo-advisor/AGENTS.md +176 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cfo-advisor/methodology/burn-runway-model.md +203 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cfo-advisor/methodology/fundraise-prep.md +192 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cmo/AGENTS.md +145 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cmo/methodology/channel-experiment-design.md +156 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cmo/methodology/positioning-canvas.md +124 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cto/AGENTS.md +151 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cto/methodology/architecture-decision.md +196 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cto/methodology/one-on-one-cadence.md +149 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/cto/methodology/tech-debt-triage.md +138 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/hr/AGENTS.md +192 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/hr/methodology/interview-rubric.md +171 -0
- package/registry/families/multi-agent-startup-team-ts/files/roles/hr/methodology/recruiting-loop-design.md +222 -0
- package/registry/families/multi-agent-startup-team-ts/manifest.json +299 -0
- package/registry/families/multimodal-agent/files/api/README.md +1 -1
- package/registry/families/multimodal-agent/files/package.json +3 -1
- package/registry/families/nextjs-ts/files/package.json +3 -1
- package/registry/families/observable-notebook/files/package.json +3 -1
- package/registry/families/observable-notebook/manifest.json +18 -1
- package/registry/families/ollama-server/files/package.json +4 -0
- package/registry/families/orchestrator-with-ui-ts/files/README.md +137 -0
- package/registry/families/orchestrator-with-ui-ts/files/app/agents/[id]/page.tsx +124 -0
- package/registry/families/orchestrator-with-ui-ts/files/app/globals.css +38 -0
- package/registry/families/orchestrator-with-ui-ts/files/app/layout.tsx +30 -0
- package/registry/families/orchestrator-with-ui-ts/files/app/page.tsx +132 -0
- package/registry/families/orchestrator-with-ui-ts/files/next.config.mjs +21 -0
- package/registry/families/orchestrator-with-ui-ts/files/package.json +34 -0
- package/registry/families/orchestrator-with-ui-ts/files/postcss.config.cjs +6 -0
- package/registry/families/orchestrator-with-ui-ts/files/src/lib/agent-roster.ts +86 -0
- package/registry/families/orchestrator-with-ui-ts/files/tailwind.config.cjs +12 -0
- package/registry/families/orchestrator-with-ui-ts/files/tsconfig.json +27 -0
- package/registry/families/orchestrator-with-ui-ts/manifest.json +91 -0
- package/registry/families/pci-dss-compliance-pack/files/package.json +4 -0
- package/registry/families/phaser-game/files/package.json +4 -0
- package/registry/families/pixijs-game/files/package.json +4 -0
- package/registry/families/playwright-worker/files/package.json +3 -1
- package/registry/families/polymarket-portfolio-hedging/files/package.json +3 -1
- package/registry/families/react-vite-ts/files/package.json +3 -1
- package/registry/families/realtime-audio-ts/files/package.json +3 -1
- package/registry/families/remix-ts/files/package.json +3 -1
- package/registry/families/risczero-zkvm/files/methods/build.rs +31 -0
- package/registry/families/risczero-zkvm/files/methods/guest-Cargo.toml +8 -0
- package/registry/families/sandbox-app-ts/files/README.md +65 -0
- package/registry/families/sandbox-app-ts/files/index.html +12 -0
- package/registry/families/sandbox-app-ts/files/package.json +31 -0
- package/registry/families/sandbox-app-ts/files/postcss.config.cjs +6 -0
- package/registry/families/sandbox-app-ts/files/src/App.tsx +92 -0
- package/registry/families/sandbox-app-ts/files/src/index.css +12 -0
- package/registry/families/sandbox-app-ts/files/src/lib/sandbox-client.ts +182 -0
- package/registry/families/sandbox-app-ts/files/src/main.tsx +13 -0
- package/registry/families/sandbox-app-ts/files/tailwind.config.cjs +8 -0
- package/registry/families/sandbox-app-ts/files/tsconfig.json +24 -0
- package/registry/families/sandbox-app-ts/files/vite.config.ts +15 -0
- package/registry/families/sandbox-app-ts/manifest.json +83 -0
- package/registry/families/soc2-compliance-pack/files/package.json +4 -0
- package/registry/families/sp1-zkvm/files/script/build.rs +63 -0
- package/registry/families/sp1-zkvm/files/script-Cargo.toml +7 -1
- package/registry/families/sp1-zkvm/manifest.json +4 -0
- package/registry/families/stylus-contracts/manifest.json +25 -0
- package/registry/families/sveltekit-ts/files/package.json +3 -1
- package/registry/families/tauri-desktop/files/package.json +4 -0
- package/registry/families/tauri-menubar/files/package.json +3 -1
- package/registry/families/tauri-tray/files/package.json +3 -1
- package/registry/families/threejs-game/files/package.json +3 -1
- package/registry/families/unity-web-proxy/files/package.json +3 -1
- package/registry/families/vision-first-agent/files/api/README.md +1 -1
- package/registry/families/vision-first-agent/files/package.json +3 -1
- package/registry/families/voice-first-agent/files/api/README.md +1 -1
- package/registry/families/voice-first-agent/files/package.json +3 -1
- package/registry/families/vue-ts/files/package.json +3 -1
- package/registry/families/wasm-rust/files/package.json +3 -1
- package/registry/families/wasm-rust/manifest.json +23 -2
- package/registry/families/webgpu-inference/files/package.json +3 -1
- package/registry/families/webgpu-render/files/package.json +3 -1
- package/registry/families/worker-job/files/package.json +4 -0
- package/registry/families/x402-service/files/package.json +5 -1
- package/registry/families/zk-prover-service/files/package.json +5 -1
- package/registry/layers/agent-base/mcp-registry/files/.mcp.json +27 -0
- package/registry/layers/agent-base/mcp-registry/files/lib/mcp/README.md +47 -0
- package/registry/layers/agent-base/mcp-registry/files/lib/mcp/register.ts +130 -0
- package/registry/layers/agent-base/mcp-registry/manifest.json +109 -0
- package/registry/layers/agent-base/memory/files/lib/memory/grep.ts +126 -0
- package/registry/layers/agent-base/memory/files/lib/memory/index.test.ts +216 -0
- package/registry/layers/agent-base/memory/files/lib/memory/index.ts +258 -0
- package/registry/layers/agent-base/memory/files/lib/memory/types.ts +58 -0
- package/registry/layers/agent-base/memory/manifest.json +108 -0
- package/registry/layers/agent-base/privacy/files/lib/privacy/README.md +116 -0
- package/registry/layers/agent-base/privacy/files/lib/privacy/detectors.ts +179 -0
- package/registry/layers/agent-base/privacy/files/lib/privacy/index.test.ts +172 -0
- package/registry/layers/agent-base/privacy/files/lib/privacy/index.ts +150 -0
- package/registry/layers/agent-base/privacy/files/lib/privacy/types.ts +66 -0
- package/registry/layers/agent-base/privacy/manifest.json +74 -0
- package/registry/layers/agent-base/scheduler/files/lib/scheduler/cron-parse.ts +221 -0
- package/registry/layers/agent-base/scheduler/files/lib/scheduler/index.test.ts +296 -0
- package/registry/layers/agent-base/scheduler/files/lib/scheduler/index.ts +175 -0
- package/registry/layers/agent-base/scheduler/files/lib/scheduler/sweep.ts +66 -0
- package/registry/layers/agent-base/scheduler/files/lib/scheduler/types.ts +43 -0
- package/registry/layers/agent-base/scheduler/manifest.json +119 -0
- package/registry/layers/agent-base/secure/files/lib/secure/README.md +95 -0
- package/registry/layers/agent-base/secure/files/lib/secure/audit.ts +166 -0
- package/registry/layers/agent-base/secure/files/lib/secure/identity.ts +110 -0
- package/registry/layers/agent-base/secure/files/lib/secure/index.test.ts +422 -0
- package/registry/layers/agent-base/secure/files/lib/secure/index.ts +16 -0
- package/registry/layers/agent-base/secure/files/lib/secure/schedule.ts +83 -0
- package/registry/layers/agent-base/secure/files/lib/secure/secrets.ts +128 -0
- package/registry/layers/agent-base/secure/files/lib/secure/webhook-in.ts +125 -0
- package/registry/layers/agent-base/secure/files/lib/secure/webhook-out.ts +137 -0
- package/registry/layers/agent-base/secure/files/lib/secure/workspace.ts +123 -0
- package/registry/layers/agent-base/secure/manifest.json +174 -0
- package/registry/layers/agent-base/tangle/files/lib/tangle.ts +56 -0
- package/registry/layers/agent-base/tangle/manifest.json +103 -0
- package/registry/layers/agent-channels/discord/files/channels/discord.env.example +14 -0
- package/registry/layers/agent-channels/discord/files/channels/discord.ts +127 -0
- package/registry/layers/agent-channels/discord/manifest.json +95 -0
- package/registry/layers/agent-channels/gmail/files/channels/gmail.env.example +54 -0
- package/registry/layers/agent-channels/gmail/files/channels/gmail.ts +206 -0
- package/registry/layers/agent-channels/gmail/manifest.json +95 -0
- package/registry/layers/agent-channels/imessage/files/channels/imessage.env.example +31 -0
- package/registry/layers/agent-channels/imessage/files/channels/imessage.ts +123 -0
- package/registry/layers/agent-channels/imessage/manifest.json +102 -0
- package/registry/layers/agent-channels/linear/files/channels/linear.env.example +42 -0
- package/registry/layers/agent-channels/linear/files/channels/linear.ts +163 -0
- package/registry/layers/agent-channels/linear/manifest.json +95 -0
- package/registry/layers/agent-channels/slack/files/channels/slack.env.example +17 -0
- package/registry/layers/agent-channels/slack/files/channels/slack.ts +119 -0
- package/registry/layers/agent-channels/slack/manifest.json +95 -0
- package/registry/layers/agent-channels/telegram/files/channels/telegram.env.example +9 -0
- package/registry/layers/agent-channels/telegram/files/channels/telegram.ts +72 -0
- package/registry/layers/agent-channels/telegram/manifest.json +95 -0
- package/registry/layers/agent-channels/whatsapp/files/channels/whatsapp.env.example +31 -0
- package/registry/layers/agent-channels/whatsapp/files/channels/whatsapp.ts +158 -0
- package/registry/layers/agent-channels/whatsapp/manifest.json +106 -0
- package/registry/layers/agent-eval/auto-research/files/src/eval/auto-research/README.md +95 -0
- package/registry/layers/agent-eval/auto-research/files/src/eval/auto-research/index.ts +49 -0
- package/registry/layers/agent-eval/auto-research/files/src/eval/auto-research/loop.ts +151 -0
- package/registry/layers/agent-eval/auto-research/files/src/eval/auto-research/pareto.ts +60 -0
- package/registry/layers/agent-eval/auto-research/files/src/eval/auto-research/propose-review.ts +36 -0
- package/registry/layers/agent-eval/auto-research/manifest.json +86 -0
- package/registry/layers/agent-eval/judge-pairwise/files/src/eval/judges/README.md +86 -0
- package/registry/layers/agent-eval/judge-pairwise/files/src/eval/judges/pairwise-cli.ts +118 -0
- package/registry/layers/agent-eval/judge-pairwise/files/src/eval/judges/pairwise-runner.ts +249 -0
- package/registry/layers/agent-eval/judge-pairwise/files/src/eval/judges/pairwise.example.ts +100 -0
- package/registry/layers/agent-eval/judge-pairwise/files/tests/pairwise-runner.test.ts +136 -0
- package/registry/layers/agent-eval/judge-pairwise/manifest.json +71 -0
- package/registry/layers/agent-eval/judge-rubric/files/judges/rubric.example.ts +38 -0
- package/registry/layers/agent-eval/judge-rubric/files/src/eval/judges/README.md +83 -0
- package/registry/layers/agent-eval/judge-rubric/files/src/eval/judges/rubric-runner.ts +161 -0
- package/registry/layers/agent-eval/judge-rubric/manifest.json +48 -0
- package/registry/layers/agent-eval/redteam/files/src/eval/redteam/README.md +100 -0
- package/registry/layers/agent-eval/redteam/files/src/eval/redteam/categories.ts +106 -0
- package/registry/layers/agent-eval/redteam/files/src/eval/redteam/cli.ts +106 -0
- package/registry/layers/agent-eval/redteam/files/src/eval/redteam/runner.ts +257 -0
- package/registry/layers/agent-eval/redteam/files/tests/runner.test.ts +82 -0
- package/registry/layers/agent-eval/redteam/manifest.json +81 -0
- package/registry/layers/agent-eval/regression/files/.github/workflows/regression-gate.yml +85 -0
- package/registry/layers/agent-eval/regression/files/src/eval/regression/README.md +93 -0
- package/registry/layers/agent-eval/regression/files/src/eval/regression/cli.ts +106 -0
- package/registry/layers/agent-eval/regression/files/src/eval/regression/gate.ts +260 -0
- package/registry/layers/agent-eval/regression/manifest.json +60 -0
- package/registry/layers/agent-eval/scenarios/files/scenarios/README.md +64 -0
- package/registry/layers/agent-eval/scenarios/files/src/eval/scenario-loader.ts +85 -0
- package/registry/layers/agent-eval/scenarios/files/src/eval/scenario-types.ts +15 -0
- package/registry/layers/agent-eval/scenarios/manifest.json +44 -0
- package/registry/layers/agent-eval/trace-multi-turn/files/src/eval/trace/README.md +75 -0
- package/registry/layers/agent-eval/trace-multi-turn/files/src/eval/trace/example-rubric.ts +105 -0
- package/registry/layers/agent-eval/trace-multi-turn/files/src/eval/trace/per-turn-scorer.ts +230 -0
- package/registry/layers/agent-eval/trace-multi-turn/files/src/eval/trace/trajectory-runner.ts +142 -0
- package/registry/layers/agent-eval/trace-multi-turn/files/tests/per-turn-scorer.test.ts +184 -0
- package/registry/layers/agent-eval/trace-multi-turn/manifest.json +70 -0
- package/registry/layers/agent-output/blocks/files/lib/blocks.ts +57 -0
- package/registry/layers/agent-output/blocks/manifest.json +95 -0
- package/registry/layers/agent-tools/clinical-screeners/files/lib/tools/screeners.ts +61 -0
- package/registry/layers/agent-tools/clinical-screeners/files/templates/escalation-protocol.md +77 -0
- package/registry/layers/agent-tools/clinical-screeners/files/templates/screener-gad7.md +62 -0
- package/registry/layers/agent-tools/clinical-screeners/files/templates/screener-phq9.md +84 -0
- package/registry/layers/agent-tools/clinical-screeners/manifest.json +61 -0
- package/registry/layers/agent-tools/phony-voice/files/lib/tools/voice.ts +38 -0
- package/registry/layers/agent-tools/phony-voice/manifest.json +47 -0
- package/registry/layers/agent-tools/research-corpus/files/lib/tools/research.ts +46 -0
- package/registry/layers/agent-tools/research-corpus/manifest.json +52 -0
- package/registry/layers/capability/agent-eval/manifest.json +2 -1
- package/registry/layers/capability/ai-chat-ui/manifest.json +2 -0
- package/registry/layers/capability/bridge-protocol-api/files/bridge-protocol-config.json +5 -0
- package/registry/layers/capability/bridge-protocol-api/files/bridge-status-routes.ts +31 -0
- package/registry/layers/capability/bridge-protocol-api/manifest.json +92 -0
- package/registry/layers/capability/crypto-bridge-ui/manifest.json +54 -2
- package/registry/layers/capability/defi-bridge/manifest.json +12 -0
- package/registry/layers/capability/evm-layerzero-oft/manifest.json +59 -0
- package/registry/layers/capability/evm-nft-mint-page/manifest.json +1 -0
- package/registry/layers/capability/evm-uniswap-v4-hook/manifest.json +58 -0
- package/registry/layers/capability/fhe-foundry-private-token/files/PrivateToken.sol +58 -0
- package/registry/layers/capability/fhe-foundry-private-token/manifest.json +27 -0
- package/registry/layers/capability/fhe-foundry-private-voting/files/PrivateVoting.sol +54 -0
- package/registry/layers/capability/fhe-foundry-private-voting/manifest.json +27 -0
- package/registry/layers/capability/fhe-foundry-sealed-auction/files/SealedAuction.sol +54 -0
- package/registry/layers/capability/fhe-foundry-sealed-auction/manifest.json +27 -0
- package/registry/layers/capability/fhe-private-token/manifest.json +16 -1
- package/registry/layers/capability/fhe-private-voting/manifest.json +16 -1
- package/registry/layers/capability/fhe-sealed-auction/manifest.json +17 -2
- package/registry/layers/capability/fhevm-private-token/files/PrivateToken.sol +55 -0
- package/registry/layers/capability/fhevm-private-token/manifest.json +27 -0
- package/registry/layers/capability/fhevm-private-voting/files/PrivateVoting.sol +51 -0
- package/registry/layers/capability/fhevm-private-voting/manifest.json +27 -0
- package/registry/layers/capability/fhevm-sealed-auction/files/SealedAuction.sol +55 -0
- package/registry/layers/capability/fhevm-sealed-auction/manifest.json +27 -0
- package/registry/layers/capability/layout-auth/manifest.json +7 -0
- package/registry/layers/capability/layout-chat/manifest.json +3 -0
- package/registry/layers/capability/tangle-remote-provider/files/remote-config.json +1 -1
- package/registry/layers/capability/zk-browser/manifest.json +1 -1
- package/registry/layers/framework/aptos-move/files/package.json +4 -0
- package/registry/layers/framework/crm-backend/files/package.json +4 -0
- package/registry/layers/framework/ecommerce-headless/files/package.json +4 -0
- package/registry/layers/framework/electron-native-os/files/package.json +4 -0
- package/registry/layers/framework/fhenix-foundry/files/Contract.sol +55 -0
- package/registry/layers/framework/fhenix-foundry/files/Contract.t.sol +39 -0
- package/registry/layers/framework/fhenix-foundry/files/Deploy.s.sol +12 -0
- package/registry/layers/framework/fhenix-foundry/files/foundry.toml +25 -0
- package/registry/layers/framework/fhenix-foundry/files/lib/cofhe-contracts/contracts/FHE.sol +94 -0
- package/registry/layers/framework/fhenix-foundry/manifest.json +12 -0
- package/registry/layers/framework/gdpr-compliance-pack/files/package.json +4 -0
- package/registry/layers/framework/godot-web/files/package.json +4 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/package.json +4 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/package.json +4 -0
- package/registry/layers/framework/hugo-static/files/package.json +4 -0
- package/registry/layers/framework/legal-case-mgmt/files/package.json +4 -0
- package/registry/layers/framework/move-package/files/Move.toml +7 -3
- package/registry/layers/framework/react-vite-ts/files/index.html +6 -6
- package/registry/layers/framework/tangle-blueprint/files/main.rs +2 -17
- package/registry/layers/framework/zola-static/files/package.json +5 -1
- package/registry/layers/ui-adapter/blocks-renderer/files/lib/blocks-to-artifacts.tsx +188 -0
- package/registry/layers/ui-adapter/blocks-renderer/files/lib/parse-blocks.test.ts +58 -0
- package/registry/layers/ui-adapter/blocks-renderer/files/lib/parse-blocks.ts +163 -0
- package/registry/layers/ui-adapter/blocks-renderer/manifest.json +61 -0
- package/registry/seed-list-agent-runtime.json +250 -0
- package/dist/lib/ab.js.map +0 -1
- package/dist/lib/audit.js.map +0 -1
- package/dist/lib/batch-export.js.map +0 -1
- package/dist/lib/benchmark.js.map +0 -1
- package/dist/lib/compose-seed.d.ts +0 -15
- package/dist/lib/compose-seed.js +0 -44
- package/dist/lib/compose-seed.js.map +0 -1
- package/dist/lib/planner/zk-preferences.d.ts +0 -9
- package/dist/lib/planner/zk-preferences.js +0 -91
- package/dist/lib/planner/zk-preferences.js.map +0 -1
- package/dist/lib/prove.js.map +0 -1
- package/dist/lib/reproducibility.js.map +0 -1
- package/dist/lib/sbom.js.map +0 -1
- package/specs/agent-python-research.json +0 -12
- package/specs/agent-rust-runtime.json +0 -11
- package/specs/agent-ts-control-plane.json +0 -13
- package/specs/api-evm-protocol.json +0 -17
- package/specs/api-health.json +0 -14
- package/specs/browser-extension-research.json +0 -12
- package/specs/cli-release-tool.json +0 -9
- package/specs/cloudflare-edge.json +0 -13
- package/specs/coinbase-landing.json +0 -13
- package/specs/dspy-pipeline.json +0 -8
- package/specs/eigenlayer-avs.json +0 -8
- package/specs/electron-ops-console.json +0 -14
- package/specs/evm-infra.json +0 -15
- package/specs/expo-wallet-mobile.json +0 -14
- package/specs/forge-counter.json +0 -10
- package/specs/fullstack-control-plane.json +0 -16
- package/specs/go-api.json +0 -12
- package/specs/go-worker.json +0 -11
- package/specs/hardhat-xlayer-config.json +0 -9
- package/specs/mcp-server.json +0 -8
- package/specs/move-treasury.json +0 -10
- package/specs/multichain-workspace.json +0 -74
- package/specs/nextjs-saas.json +0 -11
- package/specs/playwright-worker.json +0 -11
- package/specs/python-api.json +0 -13
- package/specs/python-data-insights.json +0 -9
- package/specs/react-vite-coinbase.json +0 -11
- package/specs/rust-service.json +0 -13
- package/specs/solana-keeper-worker.json +0 -13
- package/specs/solana-perps.json +0 -12
- package/specs/solana-prediction.json +0 -12
- package/specs/solana-treasury.json +0 -10
- package/specs/stylus-contracts.json +0 -8
- package/specs/tangle-blueprint.json +0 -9
- package/specs/tangle-custody.json +0 -11
- package/specs/tangle-oracle.json +0 -11
- package/specs/tauri-desktop.json +0 -13
- package/specs/trading-worker.json +0 -12
- package/specs/x402-service.json +0 -8
- package/specs/xlayer-aa.json +0 -13
- package/specs/xlayer-foundry-deploy.json +0 -12
- package/specs/xlayer-oft.json +0 -13
- package/specs/xlayer-wallet-dashboard.json +0 -18
- package/specs/zk-prover.json +0 -8
- /package/{LICENSE → LICENSE-MIT} +0 -0
- /package/dist/lib/{ab.d.ts → eval/ab.d.ts} +0 -0
- /package/dist/lib/{ab.js → eval/ab.js} +0 -0
- /package/dist/lib/{batch-export.d.ts → eval/batch-export.d.ts} +0 -0
- /package/dist/lib/{reproducibility.js → eval/reproducibility.js} +0 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
// Tests for agent-base:secure. Adversarial: every HIGH/MEDIUM finding
|
|
2
|
+
// from the 2026-04-26 critical-audit gets a regression test. Real-system
|
|
3
|
+
// where possible (real fs, real crypto); only mocks the network layer
|
|
4
|
+
// at the fetch boundary.
|
|
5
|
+
//
|
|
6
|
+
// Run with: tsx --test registry/layers/agent-base/secure/files/lib/secure/index.test.ts
|
|
7
|
+
|
|
8
|
+
import { test } from 'node:test'
|
|
9
|
+
import assert from 'node:assert/strict'
|
|
10
|
+
import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
|
|
11
|
+
import { tmpdir } from 'node:os'
|
|
12
|
+
import { join } from 'node:path'
|
|
13
|
+
import { createHmac } from 'node:crypto'
|
|
14
|
+
|
|
15
|
+
// Each test must set up a clean workspace + identity before importing the
|
|
16
|
+
// secure modules, so we use dynamic imports inside per-test setup.
|
|
17
|
+
|
|
18
|
+
function tempWorkspace(): string {
|
|
19
|
+
const root = mkdtempSync(join(tmpdir(), 'secure-test-'))
|
|
20
|
+
mkdirSync(join(root, 'agent-A'), { recursive: true })
|
|
21
|
+
mkdirSync(join(root, 'agent-A', '.audit'), { recursive: true })
|
|
22
|
+
return root
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function setupIdentity(agentId = 'agent-A', capabilities: string[] = []): void {
|
|
26
|
+
const now = Date.now()
|
|
27
|
+
process.env.TANGLE_AGENT_IDENTITY_JSON = JSON.stringify({
|
|
28
|
+
agentId,
|
|
29
|
+
sessionId: `s-${now}`,
|
|
30
|
+
deployerId: 'deployer-A',
|
|
31
|
+
signedAt: now,
|
|
32
|
+
expiresAt: now + 3600_000,
|
|
33
|
+
capabilities,
|
|
34
|
+
publicKey: 'k',
|
|
35
|
+
signature: 's',
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Every test that may trigger audit.log needs an isolated workspace root.
|
|
40
|
+
// Tests that explicitly clear env (fail-closed checks) MUST run BEFORE
|
|
41
|
+
// importing modules — or set the root pre-import. This helper does both.
|
|
42
|
+
async function setupTestEnv(agentId = 'agent-A', capabilities: string[] = ['sensitive-fs']): Promise<string> {
|
|
43
|
+
const root = tempWorkspace()
|
|
44
|
+
process.env.AGENT_WORKSPACE_ROOT = root
|
|
45
|
+
setupIdentity(agentId, capabilities)
|
|
46
|
+
mkdirSync(join(root, agentId, '.audit'), { recursive: true })
|
|
47
|
+
// Reset all module-level caches so the new identity + workspace root takes effect.
|
|
48
|
+
const { identity } = await import('./identity.js')
|
|
49
|
+
const { workspace } = await import('./workspace.js')
|
|
50
|
+
const { audit } = await import('./audit.js')
|
|
51
|
+
const { secrets } = await import('./secrets.js')
|
|
52
|
+
identity.invalidate()
|
|
53
|
+
workspace._resetForTest()
|
|
54
|
+
audit._resetStateForTest()
|
|
55
|
+
secrets.clearCache()
|
|
56
|
+
return root
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function clearEnvForFailClosed(): void {
|
|
60
|
+
delete process.env.TANGLE_AGENT_IDENTITY_JSON
|
|
61
|
+
delete process.env.SF_DEV_IDENTITY_OPTIN
|
|
62
|
+
delete process.env.AGENT_NAME
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ── identity (H3) ────────────────────────────────────────────────────────
|
|
66
|
+
|
|
67
|
+
test('identity: fail-closed when env missing AND no dev opt-in', async () => {
|
|
68
|
+
clearEnvForFailClosed()
|
|
69
|
+
// Force re-import to bypass module cache (Node test cache is per-file scope)
|
|
70
|
+
const { identity } = await import('./identity.js')
|
|
71
|
+
identity.invalidate()
|
|
72
|
+
assert.throws(() => identity.current(), /TANGLE_AGENT_IDENTITY_JSON missing/)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
test('identity: dev opt-in returns synthetic with NO sensitive-fs capability', async () => {
|
|
76
|
+
clearEnvForFailClosed()
|
|
77
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
78
|
+
process.env.SF_DEV_IDENTITY_OPTIN = '1'
|
|
79
|
+
process.env.AGENT_NAME = 'dev-X'
|
|
80
|
+
mkdirSync(join(process.env.AGENT_WORKSPACE_ROOT, 'dev-X', '.audit'), { recursive: true })
|
|
81
|
+
const { identity } = await import('./identity.js')
|
|
82
|
+
identity.invalidate()
|
|
83
|
+
const id = identity.current()
|
|
84
|
+
assert.equal(id.agentId, 'dev-X')
|
|
85
|
+
assert.deepEqual(id.capabilities, [])
|
|
86
|
+
delete process.env.SF_DEV_IDENTITY_OPTIN
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
test('identity: real envelope honored when present', async () => {
|
|
90
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
91
|
+
setupIdentity('real-agent', ['sensitive-fs'])
|
|
92
|
+
mkdirSync(join(process.env.AGENT_WORKSPACE_ROOT, 'real-agent', '.audit'), { recursive: true })
|
|
93
|
+
const { identity } = await import('./identity.js')
|
|
94
|
+
identity.invalidate()
|
|
95
|
+
const id = identity.current()
|
|
96
|
+
assert.equal(id.agentId, 'real-agent')
|
|
97
|
+
assert.deepEqual(id.capabilities, ['sensitive-fs'])
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
// ── secrets (H1, M3) ─────────────────────────────────────────────────────
|
|
101
|
+
|
|
102
|
+
test('secrets: dotenvx ciphertext rejected as un-decrypted', async () => {
|
|
103
|
+
setupIdentity()
|
|
104
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
105
|
+
process.env.NOT_DECRYPTED = 'encrypted:eyJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPT0='
|
|
106
|
+
const { secrets } = await import('./secrets.js')
|
|
107
|
+
secrets.clearCache()
|
|
108
|
+
assert.throws(
|
|
109
|
+
() => secrets.require('NOT_DECRYPTED'),
|
|
110
|
+
/value looks like dotenvx ciphertext/,
|
|
111
|
+
)
|
|
112
|
+
delete process.env.NOT_DECRYPTED
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
test('secrets: SecureString.toString() returns [REDACTED]', async () => {
|
|
116
|
+
setupIdentity()
|
|
117
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
118
|
+
process.env.LEAK_TEST = 'sk-real-secret-value'
|
|
119
|
+
const { secrets } = await import('./secrets.js')
|
|
120
|
+
secrets.clearCache()
|
|
121
|
+
const sec = secrets.require('LEAK_TEST')
|
|
122
|
+
assert.equal(sec.toString(), '[REDACTED]')
|
|
123
|
+
assert.equal(JSON.stringify({ key: sec }), '{"key":"[REDACTED]"}')
|
|
124
|
+
assert.equal(`${sec}`, '[REDACTED]')
|
|
125
|
+
// unsafeReveal returns the real value
|
|
126
|
+
assert.equal(sec.unsafeReveal('test'), 'sk-real-secret-value')
|
|
127
|
+
delete process.env.LEAK_TEST
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
test('secrets: clearCache() empties cache (M3 fix — renamed from purge)', async () => {
|
|
131
|
+
setupIdentity()
|
|
132
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
133
|
+
process.env.K1 = 'v1'
|
|
134
|
+
const { secrets } = await import('./secrets.js')
|
|
135
|
+
secrets.clearCache()
|
|
136
|
+
secrets.require('K1')
|
|
137
|
+
// First read populated cache; second read should be a cache hit (audit
|
|
138
|
+
// logs cacheHit:true)
|
|
139
|
+
secrets.require('K1')
|
|
140
|
+
secrets.clearCache()
|
|
141
|
+
// After clear, the next read is a fresh fetch
|
|
142
|
+
secrets.require('K1')
|
|
143
|
+
assert.ok(true) // no crash; behavior verified via audit log inspection
|
|
144
|
+
delete process.env.K1
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
// ── workspace (H2) ───────────────────────────────────────────────────────
|
|
148
|
+
|
|
149
|
+
test('workspace: path-traversal rejected', async () => {
|
|
150
|
+
const root = tempWorkspace()
|
|
151
|
+
process.env.AGENT_WORKSPACE_ROOT = root
|
|
152
|
+
setupIdentity('agent-A', ['sensitive-fs'])
|
|
153
|
+
const { workspace } = await import('./workspace.js')
|
|
154
|
+
workspace._resetForTest()
|
|
155
|
+
assert.throws(() => workspace.read('../../etc/passwd'), /path-traversal rejected/)
|
|
156
|
+
assert.throws(() => workspace.write('../escape', 'oops'), /path-traversal rejected/)
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
test('workspace: agent root frozen at first call (H2 fix)', async () => {
|
|
160
|
+
const root = tempWorkspace()
|
|
161
|
+
mkdirSync(join(root, 'agent-A'), { recursive: true })
|
|
162
|
+
mkdirSync(join(root, 'agent-B'), { recursive: true })
|
|
163
|
+
process.env.AGENT_WORKSPACE_ROOT = root
|
|
164
|
+
setupIdentity('agent-A')
|
|
165
|
+
const { workspace } = await import('./workspace.js')
|
|
166
|
+
workspace._resetForTest()
|
|
167
|
+
workspace.write('canary.txt', 'A')
|
|
168
|
+
// Now mutate identity to claim a different agent
|
|
169
|
+
setupIdentity('agent-B')
|
|
170
|
+
// Read should still resolve under agent-A's root (frozen)
|
|
171
|
+
assert.equal(workspace.read('canary.txt'), 'A')
|
|
172
|
+
// Confirm via direct fs that B did NOT receive the write
|
|
173
|
+
assert.throws(() => readFileSync(join(root, 'agent-B', 'canary.txt'), 'utf8'))
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
test('workspace: sensitive-zone requires sensitive-fs capability', async () => {
|
|
177
|
+
await setupTestEnv('agent-A', []) // NO sensitive-fs
|
|
178
|
+
const { workspace } = await import('./workspace.js')
|
|
179
|
+
assert.throws(() => workspace.write('sensitive/secret.txt', 'oops'), /sensitive zone access denied/)
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
test('workspace: sensitive-zone allowed with capability', async () => {
|
|
183
|
+
await setupTestEnv('agent-A', ['sensitive-fs'])
|
|
184
|
+
const { workspace } = await import('./workspace.js')
|
|
185
|
+
workspace.write('sensitive/notes.txt', 'phi')
|
|
186
|
+
assert.equal(workspace.read('sensitive/notes.txt'), 'phi')
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
// ── webhook-in (H4) ──────────────────────────────────────────────────────
|
|
190
|
+
|
|
191
|
+
test('webhook-in: case-insensitive header lookup (H4 fix)', async () => {
|
|
192
|
+
setupIdentity()
|
|
193
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
194
|
+
process.env.WH_SECRET = 's3cret-key'
|
|
195
|
+
const { defineWebhook, mountWebhooks } = await import('./webhook-in.js')
|
|
196
|
+
let handlerCalled = false
|
|
197
|
+
defineWebhook({
|
|
198
|
+
path: '/test-h4',
|
|
199
|
+
secretName: 'WH_SECRET',
|
|
200
|
+
handler: () => {
|
|
201
|
+
handlerCalled = true
|
|
202
|
+
},
|
|
203
|
+
})
|
|
204
|
+
const ts = Date.now().toString()
|
|
205
|
+
const body = '{"foo":1}'
|
|
206
|
+
const sig = createHmac('sha256', 's3cret-key').update(`${ts}.${body}`).digest('hex')
|
|
207
|
+
// Mixed-case headers as some frameworks emit
|
|
208
|
+
const res = await mountWebhooks({
|
|
209
|
+
path: '/test-h4',
|
|
210
|
+
headers: { 'X-Tangle-Signature': sig, 'X-Tangle-Timestamp': ts, 'X-Tangle-Sender': 'agent-X' },
|
|
211
|
+
rawBody: body,
|
|
212
|
+
})
|
|
213
|
+
assert.equal(res.status, 200)
|
|
214
|
+
assert.ok(handlerCalled)
|
|
215
|
+
delete process.env.WH_SECRET
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
test('webhook-in: bad signature rejected with 401', async () => {
|
|
219
|
+
setupIdentity()
|
|
220
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
221
|
+
process.env.WH_SECRET2 = 's3cret-key'
|
|
222
|
+
const { defineWebhook, mountWebhooks } = await import('./webhook-in.js')
|
|
223
|
+
defineWebhook({ path: '/test-bad-sig', secretName: 'WH_SECRET2', handler: () => {} })
|
|
224
|
+
const ts = Date.now().toString()
|
|
225
|
+
const body = '{"foo":1}'
|
|
226
|
+
const res = await mountWebhooks({
|
|
227
|
+
path: '/test-bad-sig',
|
|
228
|
+
headers: { 'x-tangle-signature': 'deadbeef', 'x-tangle-timestamp': ts },
|
|
229
|
+
rawBody: body,
|
|
230
|
+
})
|
|
231
|
+
assert.equal(res.status, 401)
|
|
232
|
+
assert.match(res.body, /signature mismatch/)
|
|
233
|
+
delete process.env.WH_SECRET2
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
test('webhook-in: replay window enforced', async () => {
|
|
237
|
+
setupIdentity()
|
|
238
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
239
|
+
process.env.WH_SECRET3 = 'k'
|
|
240
|
+
const { defineWebhook, mountWebhooks } = await import('./webhook-in.js')
|
|
241
|
+
defineWebhook({ path: '/test-replay', secretName: 'WH_SECRET3', handler: () => {} })
|
|
242
|
+
const oldTs = (Date.now() - 10 * 60_000).toString() // 10 min ago, past 5-min window
|
|
243
|
+
const body = '{}'
|
|
244
|
+
const sig = createHmac('sha256', 'k').update(`${oldTs}.${body}`).digest('hex')
|
|
245
|
+
const res = await mountWebhooks({
|
|
246
|
+
path: '/test-replay',
|
|
247
|
+
headers: { 'x-tangle-signature': sig, 'x-tangle-timestamp': oldTs },
|
|
248
|
+
rawBody: body,
|
|
249
|
+
})
|
|
250
|
+
assert.equal(res.status, 401)
|
|
251
|
+
assert.match(res.body, /timestamp outside replay window/)
|
|
252
|
+
delete process.env.WH_SECRET3
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
test('webhook-in: schema rejection returns 422', async () => {
|
|
256
|
+
setupIdentity()
|
|
257
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
258
|
+
process.env.WH_SECRET4 = 'k'
|
|
259
|
+
const { defineWebhook, mountWebhooks } = await import('./webhook-in.js')
|
|
260
|
+
defineWebhook({
|
|
261
|
+
path: '/test-schema',
|
|
262
|
+
secretName: 'WH_SECRET4',
|
|
263
|
+
schema: (b) => (typeof (b as { id?: string }).id === 'string' ? null : 'id required'),
|
|
264
|
+
handler: () => {},
|
|
265
|
+
})
|
|
266
|
+
const ts = Date.now().toString()
|
|
267
|
+
const body = '{"name":"alice"}' // missing id
|
|
268
|
+
const sig = createHmac('sha256', 'k').update(`${ts}.${body}`).digest('hex')
|
|
269
|
+
const res = await mountWebhooks({
|
|
270
|
+
path: '/test-schema',
|
|
271
|
+
headers: { 'x-tangle-signature': sig, 'x-tangle-timestamp': ts },
|
|
272
|
+
rawBody: body,
|
|
273
|
+
})
|
|
274
|
+
assert.equal(res.status, 422)
|
|
275
|
+
assert.match(res.body, /id required/)
|
|
276
|
+
delete process.env.WH_SECRET4
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
// ── webhook-out ──────────────────────────────────────────────────────────
|
|
280
|
+
|
|
281
|
+
test('webhook-out: rejects target not in allowedDomains', async () => {
|
|
282
|
+
setupIdentity()
|
|
283
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
284
|
+
process.env.OUT_SECRET = 'k'
|
|
285
|
+
const { webhookOut } = await import('./webhook-out.js')
|
|
286
|
+
const r = await webhookOut('https://evil.example.com/hook', { x: 1 }, {
|
|
287
|
+
secretName: 'OUT_SECRET',
|
|
288
|
+
allowedDomains: ['tangle.tools'],
|
|
289
|
+
})
|
|
290
|
+
assert.equal(r.ok, false)
|
|
291
|
+
assert.match(r.error ?? '', /allowedDomains/)
|
|
292
|
+
delete process.env.OUT_SECRET
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
test('webhook-out: subdomain match works', async () => {
|
|
296
|
+
setupIdentity()
|
|
297
|
+
process.env.AGENT_WORKSPACE_ROOT = tempWorkspace()
|
|
298
|
+
process.env.OUT_SECRET2 = 'k'
|
|
299
|
+
// Stub global fetch to capture the request without making it
|
|
300
|
+
const realFetch = globalThis.fetch
|
|
301
|
+
let captured: { url: string; headers: Record<string, string> } | null = null
|
|
302
|
+
globalThis.fetch = (async (url: string, init: RequestInit) => {
|
|
303
|
+
captured = { url, headers: init.headers as Record<string, string> }
|
|
304
|
+
return new Response('ok', { status: 200 })
|
|
305
|
+
}) as typeof fetch
|
|
306
|
+
try {
|
|
307
|
+
const { webhookOut } = await import('./webhook-out.js')
|
|
308
|
+
const r = await webhookOut('https://api.tangle.tools/hook', { x: 1 }, {
|
|
309
|
+
secretName: 'OUT_SECRET2',
|
|
310
|
+
allowedDomains: ['tangle.tools'],
|
|
311
|
+
})
|
|
312
|
+
assert.equal(r.ok, true)
|
|
313
|
+
assert.ok(captured)
|
|
314
|
+
assert.ok(captured!.headers['x-tangle-signature'])
|
|
315
|
+
assert.ok(captured!.headers['x-tangle-timestamp'])
|
|
316
|
+
} finally {
|
|
317
|
+
globalThis.fetch = realFetch
|
|
318
|
+
delete process.env.OUT_SECRET2
|
|
319
|
+
}
|
|
320
|
+
})
|
|
321
|
+
|
|
322
|
+
// ── audit (M1, M2) ───────────────────────────────────────────────────────
|
|
323
|
+
|
|
324
|
+
test('audit: hash chain stable across canonical JSON (M1 fix)', async () => {
|
|
325
|
+
await setupTestEnv()
|
|
326
|
+
const { audit } = await import('./audit.js')
|
|
327
|
+
// Two entries; the chain links via prevHash; verifyDay re-derives the
|
|
328
|
+
// chain and confirms it matches.
|
|
329
|
+
audit.log({ event: 'test.event-1', target: 'X', payload: { a: 1, b: 2 } })
|
|
330
|
+
audit.log({ event: 'test.event-2', target: 'Y', payload: { c: 3 } })
|
|
331
|
+
const today = new Date().toISOString().slice(0, 10)
|
|
332
|
+
const result = audit.verifyDay(today)
|
|
333
|
+
assert.equal(result.ok, true)
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
test('audit: verifyDay detects tampering', async () => {
|
|
337
|
+
setupIdentity('audit-tamper-test')
|
|
338
|
+
const root = tempWorkspace()
|
|
339
|
+
mkdirSync(join(root, 'audit-tamper-test', '.audit'), { recursive: true })
|
|
340
|
+
process.env.AGENT_WORKSPACE_ROOT = root
|
|
341
|
+
const { audit } = await import('./audit.js')
|
|
342
|
+
audit.log({ event: 'untampered', target: 'Z' })
|
|
343
|
+
audit.log({ event: 'untampered2', target: 'Z' })
|
|
344
|
+
const today = new Date().toISOString().slice(0, 10)
|
|
345
|
+
const file = join(root, 'audit-tamper-test', '.audit', `${today}.jsonl`)
|
|
346
|
+
let raw = readFileSync(file, 'utf8')
|
|
347
|
+
// Tamper the first line's payload — the chain hash on line 2 should mismatch
|
|
348
|
+
const lines = raw.trim().split('\n')
|
|
349
|
+
const first = JSON.parse(lines[0]!)
|
|
350
|
+
first.target = 'TAMPERED'
|
|
351
|
+
lines[0] = JSON.stringify(first)
|
|
352
|
+
writeFileSync(file, lines.join('\n') + '\n')
|
|
353
|
+
const result = audit.verifyDay(today)
|
|
354
|
+
assert.equal(result.ok, false)
|
|
355
|
+
assert.ok(result.tamperedAtSeq! >= 1)
|
|
356
|
+
})
|
|
357
|
+
|
|
358
|
+
test('audit: fail-closed on missing identity (M2 fix)', async () => {
|
|
359
|
+
clearEnvForFailClosed()
|
|
360
|
+
const { audit } = await import('./audit.js')
|
|
361
|
+
assert.throws(
|
|
362
|
+
() => audit.log({ event: 'missing-actor' }),
|
|
363
|
+
/cannot resolve actor/,
|
|
364
|
+
)
|
|
365
|
+
})
|
|
366
|
+
|
|
367
|
+
// ── schedule ─────────────────────────────────────────────────────────────
|
|
368
|
+
|
|
369
|
+
test('schedule: cron validation accepts standard expressions', async () => {
|
|
370
|
+
const { schedule } = await import('./schedule.js')
|
|
371
|
+
assert.equal(schedule.validateCron('0 14 * * 1'), null)
|
|
372
|
+
assert.equal(schedule.validateCron('*/15 * * * *'), null)
|
|
373
|
+
})
|
|
374
|
+
|
|
375
|
+
test('schedule: cron validation rejects malformed', async () => {
|
|
376
|
+
const { schedule } = await import('./schedule.js')
|
|
377
|
+
assert.match(schedule.validateCron('0 14 * *') ?? '', /5 fields/)
|
|
378
|
+
assert.match(schedule.validateCron('99 * * * *') ?? '', /out of range/)
|
|
379
|
+
})
|
|
380
|
+
|
|
381
|
+
test('schedule: handler dispatch via _fire respects identity', async () => {
|
|
382
|
+
await setupTestEnv()
|
|
383
|
+
const { schedule } = await import('./schedule.js')
|
|
384
|
+
let fired = false
|
|
385
|
+
// Use unique capability per test so registration doesn't conflict
|
|
386
|
+
schedule.on('test-cap-fire', async () => {
|
|
387
|
+
fired = true
|
|
388
|
+
})
|
|
389
|
+
await schedule._fire({ id: 't1', cron: '0 8 * * *', capability: 'test-cap-fire' })
|
|
390
|
+
assert.equal(fired, true)
|
|
391
|
+
})
|
|
392
|
+
|
|
393
|
+
test('schedule: missing handler throws', async () => {
|
|
394
|
+
await setupTestEnv()
|
|
395
|
+
const { schedule } = await import('./schedule.js')
|
|
396
|
+
await assert.rejects(
|
|
397
|
+
() => schedule._fire({ id: 't2', cron: '0 8 * * *', capability: 'no-such-cap-unique' }),
|
|
398
|
+
/no schedule handler/,
|
|
399
|
+
)
|
|
400
|
+
})
|
|
401
|
+
|
|
402
|
+
// ── identity verify() ────────────────────────────────────────────────────
|
|
403
|
+
//
|
|
404
|
+
// verify() is NOT IMPLEMENTED — see identity.ts. Until the gateway
|
|
405
|
+
// pubkey directory ships, calling verify() throws. This test pins
|
|
406
|
+
// that behavior so a future stub that "just returns true" cannot
|
|
407
|
+
// silently regress the contract.
|
|
408
|
+
|
|
409
|
+
test('identity: verify() throws not-implemented (gateway pubkey directory not shipped)', async () => {
|
|
410
|
+
await setupTestEnv()
|
|
411
|
+
const { identity } = await import('./identity.js')
|
|
412
|
+
const envelope = {
|
|
413
|
+
agentId: 'X',
|
|
414
|
+
sessionId: 's',
|
|
415
|
+
deployerId: 'd',
|
|
416
|
+
signedAt: Date.now(),
|
|
417
|
+
expiresAt: Date.now() + 3600_000,
|
|
418
|
+
publicKey: 'k',
|
|
419
|
+
signature: 's',
|
|
420
|
+
}
|
|
421
|
+
assert.throws(() => identity.verify(envelope), /not implemented/)
|
|
422
|
+
})
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// agent-base:secure — security floor for every agent-runtime bundle.
|
|
2
|
+
//
|
|
3
|
+
// Composition surface. Each primitive ships as its own module so a bundle
|
|
4
|
+
// can import only what it needs. The default operating mode is "everything
|
|
5
|
+
// is secure unless you explicitly opt out, and opt-outs are audit-logged."
|
|
6
|
+
//
|
|
7
|
+
// See docs/specs/agent-base-secure.md for guarantees, threat model, and
|
|
8
|
+
// operator responsibilities.
|
|
9
|
+
|
|
10
|
+
export { loadSecret, requireSecret, secrets, type SecureString } from './secrets.js'
|
|
11
|
+
export { workspace } from './workspace.js'
|
|
12
|
+
export { defineWebhook, mountWebhooks, type WebhookSpec } from './webhook-in.js'
|
|
13
|
+
export { webhookOut, type WebhookOutOptions } from './webhook-out.js'
|
|
14
|
+
export { schedule, type ScheduledTrigger } from './schedule.js'
|
|
15
|
+
export { identity } from './identity.js'
|
|
16
|
+
export { audit, type AuditEntry } from './audit.js'
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// schedule — declarative scheduled triggers driven by the manifest's
|
|
2
|
+
// defaults.schedule[] array. Each trigger executes with the agent's
|
|
3
|
+
// signed identity. Replaces wrangler.toml [triggers] cron config.
|
|
4
|
+
//
|
|
5
|
+
// Bundles do not write cron handlers directly; they declare schedules
|
|
6
|
+
// in the manifest and implement the matching capability. The runtime
|
|
7
|
+
// dispatches to the capability at trigger time.
|
|
8
|
+
|
|
9
|
+
import { audit } from './audit.js'
|
|
10
|
+
import { identity } from './identity.js'
|
|
11
|
+
|
|
12
|
+
export interface ScheduledTrigger {
|
|
13
|
+
/** Stable id, matched against capability dispatcher. */
|
|
14
|
+
id: string
|
|
15
|
+
/** Standard 5-field cron expression (minute hour day month dayOfWeek). */
|
|
16
|
+
cron: string
|
|
17
|
+
/** Capability name from manifest.defaults.declaredCapabilities. */
|
|
18
|
+
capability: string
|
|
19
|
+
/** When true, runtime guarantees at-least-once delivery on operator
|
|
20
|
+
* restart; otherwise best-effort. */
|
|
21
|
+
atLeastOnce?: boolean
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const handlers = new Map<string, (trigger: ScheduledTrigger) => Promise<void>>()
|
|
25
|
+
|
|
26
|
+
export const schedule = {
|
|
27
|
+
/** Register a capability handler. The runtime calls this on trigger
|
|
28
|
+
* fire. The handler's identity is the agent's current identity. */
|
|
29
|
+
on(capability: string, handler: (trigger: ScheduledTrigger) => Promise<void>): void {
|
|
30
|
+
if (handlers.has(capability)) {
|
|
31
|
+
throw new Error(`schedule handler already registered for capability: ${capability}`)
|
|
32
|
+
}
|
|
33
|
+
handlers.set(capability, handler)
|
|
34
|
+
audit.log({ event: 'schedule.handler-register', target: capability })
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
/** Runtime entry point — invoked by the trigger dispatcher when a
|
|
38
|
+
* cron fires. Bundles do NOT call this directly. */
|
|
39
|
+
async _fire(trigger: ScheduledTrigger): Promise<void> {
|
|
40
|
+
const handler = handlers.get(trigger.capability)
|
|
41
|
+
if (!handler) {
|
|
42
|
+
audit.log({ event: 'schedule.miss', target: trigger.id, payload: { capability: trigger.capability, reason: 'no-handler-registered' } })
|
|
43
|
+
throw new Error(`no schedule handler for capability ${trigger.capability}`)
|
|
44
|
+
}
|
|
45
|
+
const id = identity.current()
|
|
46
|
+
audit.log({ event: 'schedule.fire', target: trigger.id, payload: { capability: trigger.capability, agentId: id.agentId } })
|
|
47
|
+
try {
|
|
48
|
+
await handler(trigger)
|
|
49
|
+
audit.log({ event: 'schedule.complete', target: trigger.id, payload: { capability: trigger.capability } })
|
|
50
|
+
} catch (err) {
|
|
51
|
+
audit.log({ event: 'schedule.error', target: trigger.id, payload: { capability: trigger.capability, error: (err as Error).message.slice(0, 200) } })
|
|
52
|
+
throw err
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
/** Validate a cron expression at registration time (before runtime
|
|
57
|
+
* accepts the manifest). Returns null on success, error string on
|
|
58
|
+
* failure. The runtime's own cron parser may be stricter. */
|
|
59
|
+
validateCron(cron: string): null | string {
|
|
60
|
+
const fields = cron.trim().split(/\s+/)
|
|
61
|
+
if (fields.length !== 5) return `expected 5 fields (m h dom mon dow), got ${fields.length}`
|
|
62
|
+
const ranges = [
|
|
63
|
+
[0, 59], // minute
|
|
64
|
+
[0, 23], // hour
|
|
65
|
+
[1, 31], // day-of-month
|
|
66
|
+
[1, 12], // month
|
|
67
|
+
[0, 7], // day-of-week (7 == 0 == Sunday)
|
|
68
|
+
]
|
|
69
|
+
for (let i = 0; i < 5; i++) {
|
|
70
|
+
const f = fields[i]!
|
|
71
|
+
if (f === '*') continue
|
|
72
|
+
// Allow simple comma-separated lists, ranges, steps.
|
|
73
|
+
if (!/^(\*|\*\/\d+|\d+(-\d+)?(,\d+(-\d+)?)*(\/\d+)?)$/.test(f)) {
|
|
74
|
+
return `field ${i} (${f}) does not match cron syntax`
|
|
75
|
+
}
|
|
76
|
+
const numbers = f.match(/\d+/g)?.map(Number) ?? []
|
|
77
|
+
for (const n of numbers) {
|
|
78
|
+
if (n < ranges[i]![0] || n > ranges[i]![1]) return `field ${i} value ${n} out of range [${ranges[i]![0]}, ${ranges[i]![1]}]`
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null
|
|
82
|
+
},
|
|
83
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// secrets — dotenvx-encrypted secret storage with a SecureString that
|
|
2
|
+
// resists accidental leakage via logs/JSON serialization.
|
|
3
|
+
//
|
|
4
|
+
// Threat: an agent author console.logs the API key during a debug
|
|
5
|
+
// session, that log gets shipped to Sentry. SecureString throws on
|
|
6
|
+
// .toString() and serializes as '[REDACTED]'. The author has to call
|
|
7
|
+
// .unsafeReveal() to get the raw string, and that call is audit-logged.
|
|
8
|
+
|
|
9
|
+
import { audit } from './audit.js'
|
|
10
|
+
|
|
11
|
+
const REDACTED = '[REDACTED]'
|
|
12
|
+
|
|
13
|
+
export class SecureString {
|
|
14
|
+
// Private + non-enumerable so JSON.stringify can't reach it.
|
|
15
|
+
readonly #value: string
|
|
16
|
+
readonly #name: string
|
|
17
|
+
|
|
18
|
+
constructor(name: string, value: string) {
|
|
19
|
+
this.#name = name
|
|
20
|
+
this.#value = value
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
toString(): string {
|
|
24
|
+
return REDACTED
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
toJSON(): string {
|
|
28
|
+
return REDACTED
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Explicit reveal. Audit-logs every call. Use only at the
|
|
32
|
+
// boundary where the raw string crosses into a non-loggable
|
|
33
|
+
// surface (HTTP Authorization header, signed payload, etc.).
|
|
34
|
+
unsafeReveal(reason: string): string {
|
|
35
|
+
audit.log({
|
|
36
|
+
event: 'secret.reveal',
|
|
37
|
+
target: this.#name,
|
|
38
|
+
payload: { reason: reason.slice(0, 200) },
|
|
39
|
+
})
|
|
40
|
+
return this.#value
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
get name(): string {
|
|
44
|
+
return this.#name
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface SecretsBackend {
|
|
49
|
+
get(name: string): string | undefined
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Detects values that look like dotenvx ciphertext but were not decrypted —
|
|
53
|
+
// the failure mode H1 flagged. Real dotenvx output always starts with
|
|
54
|
+
// `encrypted:` or is a base64 envelope with a known prefix. If a secret value
|
|
55
|
+
// matches this shape, dotenvx didn't run and we'd be returning ciphertext
|
|
56
|
+
// to the caller as if it were plaintext.
|
|
57
|
+
const DOTENVX_CIPHERTEXT_RE = /^encrypted:[A-Za-z0-9+/=]+$/
|
|
58
|
+
|
|
59
|
+
class DotenvxBackend implements SecretsBackend {
|
|
60
|
+
// Uses process.env at runtime. dotenvx's CLI/runtime decrypts
|
|
61
|
+
// .env.encrypted via DOTENV_PRIVATE_KEY at process start; we read
|
|
62
|
+
// from process.env which the dotenvx wrapper already populated.
|
|
63
|
+
get(name: string): string | undefined {
|
|
64
|
+
const raw = process.env[name]
|
|
65
|
+
if (raw === undefined) return undefined
|
|
66
|
+
if (DOTENVX_CIPHERTEXT_RE.test(raw)) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
`secrets.${name}: value looks like dotenvx ciphertext (starts with 'encrypted:'). ` +
|
|
69
|
+
'dotenvx decryption did not run — check DOTENV_PRIVATE_KEY is set in the runtime ' +
|
|
70
|
+
'environment and that .env.encrypted is loaded before the agent starts. ' +
|
|
71
|
+
'Refusing to return ciphertext as if it were plaintext.',
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
return raw
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const cache = new Map<string, SecureString>()
|
|
79
|
+
const backend: SecretsBackend = new DotenvxBackend()
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Load a secret. Returns undefined when missing (caller decides whether
|
|
83
|
+
* that's recoverable). Use requireSecret() for hard-required secrets.
|
|
84
|
+
*/
|
|
85
|
+
export function loadSecret(name: string): SecureString | undefined {
|
|
86
|
+
if (cache.has(name)) {
|
|
87
|
+
audit.log({ event: 'secret.read', target: name, payload: { cacheHit: true } })
|
|
88
|
+
return cache.get(name)
|
|
89
|
+
}
|
|
90
|
+
const raw = backend.get(name)
|
|
91
|
+
if (raw === undefined) {
|
|
92
|
+
audit.log({ event: 'secret.miss', target: name })
|
|
93
|
+
return undefined
|
|
94
|
+
}
|
|
95
|
+
const secure = new SecureString(name, raw)
|
|
96
|
+
cache.set(name, secure)
|
|
97
|
+
audit.log({ event: 'secret.read', target: name, payload: { cacheHit: false } })
|
|
98
|
+
return secure
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Hard-required secret. Throws on miss. Use this when the bundle
|
|
103
|
+
* cannot operate without the secret.
|
|
104
|
+
*/
|
|
105
|
+
export function requireSecret(name: string): SecureString {
|
|
106
|
+
const secret = loadSecret(name)
|
|
107
|
+
if (!secret) {
|
|
108
|
+
throw new Error(`required secret missing: ${name} (declare in manifest.defaults.secrets and check .env.encrypted)`)
|
|
109
|
+
}
|
|
110
|
+
return secret
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export const secrets = {
|
|
114
|
+
load: loadSecret,
|
|
115
|
+
require: requireSecret,
|
|
116
|
+
/**
|
|
117
|
+
* Clear the in-process secret cache. SecureString instances already
|
|
118
|
+
* handed out to bundle code are NOT zeroed — they remain live in
|
|
119
|
+
* memory until garbage-collected. This is a CACHE clear, not a memory
|
|
120
|
+
* shred. The name reflects what it actually does (M3 fix — was misnamed
|
|
121
|
+
* `purge()` which implied a stronger guarantee than delivered).
|
|
122
|
+
*/
|
|
123
|
+
clearCache(): void {
|
|
124
|
+
const count = cache.size
|
|
125
|
+
cache.clear()
|
|
126
|
+
audit.log({ event: 'secret.cache-clear', payload: { cleared: count } })
|
|
127
|
+
},
|
|
128
|
+
}
|