@soleri/core 2.11.0 → 7.0.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/data/flows/build.flow.yaml +128 -0
- package/data/flows/deliver.flow.yaml +110 -0
- package/data/flows/design.flow.yaml +108 -0
- package/data/flows/enhance.flow.yaml +90 -0
- package/data/flows/explore.flow.yaml +84 -0
- package/data/flows/fix.flow.yaml +90 -0
- package/data/flows/plan.flow.yaml +87 -0
- package/data/flows/review.flow.yaml +90 -0
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +10 -0
- package/dist/brain/brain.js.map +1 -1
- package/dist/brain/intelligence.d.ts.map +1 -1
- package/dist/brain/intelligence.js +16 -2
- package/dist/brain/intelligence.js.map +1 -1
- package/dist/capabilities/chain-mapping.d.ts +21 -0
- package/dist/capabilities/chain-mapping.d.ts.map +1 -0
- package/dist/capabilities/chain-mapping.js +86 -0
- package/dist/capabilities/chain-mapping.js.map +1 -0
- package/dist/capabilities/index.d.ts +10 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +8 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/registry.d.ts +95 -0
- package/dist/capabilities/registry.d.ts.map +1 -0
- package/dist/capabilities/registry.js +227 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/capabilities/types.d.ts +106 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +12 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/control/intent-router.d.ts.map +1 -1
- package/dist/control/intent-router.js +58 -2
- package/dist/control/intent-router.js.map +1 -1
- package/dist/domain-packs/index.d.ts +8 -0
- package/dist/domain-packs/index.d.ts.map +1 -0
- package/dist/domain-packs/index.js +8 -0
- package/dist/domain-packs/index.js.map +1 -0
- package/dist/domain-packs/inject-rules.d.ts +24 -0
- package/dist/domain-packs/inject-rules.d.ts.map +1 -0
- package/dist/domain-packs/inject-rules.js +65 -0
- package/dist/domain-packs/inject-rules.js.map +1 -0
- package/dist/domain-packs/knowledge-installer.d.ts +27 -0
- package/dist/domain-packs/knowledge-installer.d.ts.map +1 -0
- package/dist/domain-packs/knowledge-installer.js +89 -0
- package/dist/domain-packs/knowledge-installer.js.map +1 -0
- package/dist/domain-packs/loader.d.ts +28 -0
- package/dist/domain-packs/loader.d.ts.map +1 -0
- package/dist/domain-packs/loader.js +105 -0
- package/dist/domain-packs/loader.js.map +1 -0
- package/dist/domain-packs/pack-runtime.d.ts +80 -0
- package/dist/domain-packs/pack-runtime.d.ts.map +1 -0
- package/dist/domain-packs/pack-runtime.js +36 -0
- package/dist/domain-packs/pack-runtime.js.map +1 -0
- package/dist/domain-packs/skills-installer.d.ts +21 -0
- package/dist/domain-packs/skills-installer.d.ts.map +1 -0
- package/dist/domain-packs/skills-installer.js +38 -0
- package/dist/domain-packs/skills-installer.js.map +1 -0
- package/dist/domain-packs/token-resolver.d.ts +37 -0
- package/dist/domain-packs/token-resolver.d.ts.map +1 -0
- package/dist/domain-packs/token-resolver.js +109 -0
- package/dist/domain-packs/token-resolver.js.map +1 -0
- package/dist/domain-packs/types.d.ts +91 -0
- package/dist/domain-packs/types.d.ts.map +1 -0
- package/dist/domain-packs/types.js +122 -0
- package/dist/domain-packs/types.js.map +1 -0
- package/dist/engine/bin/soleri-engine.d.ts +12 -0
- package/dist/engine/bin/soleri-engine.d.ts.map +1 -0
- package/dist/engine/bin/soleri-engine.js +183 -0
- package/dist/engine/bin/soleri-engine.js.map +1 -0
- package/dist/engine/core-ops.d.ts +27 -0
- package/dist/engine/core-ops.d.ts.map +1 -0
- package/dist/engine/core-ops.js +159 -0
- package/dist/engine/core-ops.js.map +1 -0
- package/dist/engine/index.d.ts +19 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +17 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/register-engine.d.ts +54 -0
- package/dist/engine/register-engine.d.ts.map +1 -0
- package/dist/engine/register-engine.js +270 -0
- package/dist/engine/register-engine.js.map +1 -0
- package/dist/engine/test-helpers.d.ts +30 -0
- package/dist/engine/test-helpers.d.ts.map +1 -0
- package/dist/engine/test-helpers.js +59 -0
- package/dist/engine/test-helpers.js.map +1 -0
- package/dist/flows/context-router.d.ts +39 -0
- package/dist/flows/context-router.d.ts.map +1 -0
- package/dist/flows/context-router.js +206 -0
- package/dist/flows/context-router.js.map +1 -0
- package/dist/flows/dispatch-registry.d.ts +24 -0
- package/dist/flows/dispatch-registry.d.ts.map +1 -0
- package/dist/flows/dispatch-registry.js +70 -0
- package/dist/flows/dispatch-registry.js.map +1 -0
- package/dist/flows/epilogue.d.ts +24 -0
- package/dist/flows/epilogue.d.ts.map +1 -0
- package/dist/flows/epilogue.js +52 -0
- package/dist/flows/epilogue.js.map +1 -0
- package/dist/flows/executor.d.ts +25 -0
- package/dist/flows/executor.d.ts.map +1 -0
- package/dist/flows/executor.js +153 -0
- package/dist/flows/executor.js.map +1 -0
- package/dist/flows/gate-evaluator.d.ts +26 -0
- package/dist/flows/gate-evaluator.d.ts.map +1 -0
- package/dist/flows/gate-evaluator.js +162 -0
- package/dist/flows/gate-evaluator.js.map +1 -0
- package/dist/flows/index.d.ts +14 -0
- package/dist/flows/index.d.ts.map +1 -0
- package/dist/flows/index.js +20 -0
- package/dist/flows/index.js.map +1 -0
- package/dist/flows/loader.d.ts +17 -0
- package/dist/flows/loader.d.ts.map +1 -0
- package/dist/flows/loader.js +61 -0
- package/dist/flows/loader.js.map +1 -0
- package/dist/flows/plan-builder.d.ts +40 -0
- package/dist/flows/plan-builder.d.ts.map +1 -0
- package/dist/flows/plan-builder.js +213 -0
- package/dist/flows/plan-builder.js.map +1 -0
- package/dist/flows/probes.d.ts +11 -0
- package/dist/flows/probes.d.ts.map +1 -0
- package/dist/flows/probes.js +62 -0
- package/dist/flows/probes.js.map +1 -0
- package/dist/flows/types.d.ts +950 -0
- package/dist/flows/types.d.ts.map +1 -0
- package/dist/flows/types.js +105 -0
- package/dist/flows/types.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/intelligence/loader.d.ts +19 -0
- package/dist/intelligence/loader.d.ts.map +1 -1
- package/dist/intelligence/loader.js +86 -5
- package/dist/intelligence/loader.js.map +1 -1
- package/dist/intelligence/types.d.ts +1 -0
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/packs/types.d.ts +58 -19
- package/dist/packs/types.d.ts.map +1 -1
- package/dist/packs/types.js +14 -0
- package/dist/packs/types.js.map +1 -1
- package/dist/playbooks/generic/onboarding.d.ts +9 -0
- package/dist/playbooks/generic/onboarding.d.ts.map +1 -0
- package/dist/playbooks/generic/onboarding.js +74 -0
- package/dist/playbooks/generic/onboarding.js.map +1 -0
- package/dist/playbooks/playbook-registry.d.ts.map +1 -1
- package/dist/playbooks/playbook-registry.js +2 -0
- package/dist/playbooks/playbook-registry.js.map +1 -1
- package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
- package/dist/runtime/admin-extra-ops.js +15 -9
- package/dist/runtime/admin-extra-ops.js.map +1 -1
- package/dist/runtime/admin-ops.js +4 -4
- package/dist/runtime/admin-ops.js.map +1 -1
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +33 -1
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/domain-ops.d.ts +21 -5
- package/dist/runtime/domain-ops.d.ts.map +1 -1
- package/dist/runtime/domain-ops.js +85 -8
- package/dist/runtime/domain-ops.js.map +1 -1
- package/dist/runtime/facades/cognee-facade.d.ts.map +1 -1
- package/dist/runtime/facades/cognee-facade.js +3 -1
- package/dist/runtime/facades/cognee-facade.js.map +1 -1
- package/dist/runtime/facades/index.d.ts.map +1 -1
- package/dist/runtime/facades/index.js +10 -6
- package/dist/runtime/facades/index.js.map +1 -1
- package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
- package/dist/runtime/facades/vault-facade.js +2 -0
- package/dist/runtime/facades/vault-facade.js.map +1 -1
- package/dist/runtime/orchestrate-ops.d.ts +8 -7
- package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
- package/dist/runtime/orchestrate-ops.js +227 -58
- package/dist/runtime/orchestrate-ops.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +23 -17
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +6 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.d.ts +13 -0
- package/dist/runtime/vault-linking-ops.d.ts.map +1 -0
- package/dist/runtime/vault-linking-ops.js +367 -0
- package/dist/runtime/vault-linking-ops.js.map +1 -0
- package/dist/vault/linking.d.ts +46 -0
- package/dist/vault/linking.d.ts.map +1 -0
- package/dist/vault/linking.js +275 -0
- package/dist/vault/linking.js.map +1 -0
- package/dist/vault/vault-types.d.ts +37 -0
- package/dist/vault/vault-types.d.ts.map +1 -1
- package/dist/vault/vault.d.ts +12 -0
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +85 -6
- package/dist/vault/vault.js.map +1 -1
- package/package.json +4 -1
- package/src/__tests__/admin-extra-ops.test.ts +1 -1
- package/src/__tests__/admin-ops.test.ts +2 -1
- package/src/__tests__/cognee-client-gaps.test.ts +470 -0
- package/src/__tests__/cognee-hybrid-search.test.ts +478 -0
- package/src/__tests__/cognee-sync-manager-deep.test.ts +630 -0
- package/src/__tests__/cognee-sync-manager.test.ts +1 -0
- package/src/__tests__/core-ops.test.ts +9 -61
- package/src/__tests__/domain-packs.test.ts +421 -0
- package/src/__tests__/flows.test.ts +604 -0
- package/src/__tests__/playbook-registry.test.ts +2 -2
- package/src/__tests__/playbook-seeder.test.ts +8 -8
- package/src/__tests__/playbook.test.ts +5 -5
- package/src/__tests__/token-resolver.test.ts +79 -0
- package/src/brain/brain.ts +12 -0
- package/src/brain/intelligence.ts +21 -2
- package/src/capabilities/chain-mapping.ts +93 -0
- package/src/capabilities/index.ts +21 -0
- package/src/capabilities/registry.ts +290 -0
- package/src/capabilities/types.ts +143 -0
- package/src/control/intent-router.ts +46 -2
- package/src/domain-packs/index.ts +27 -0
- package/src/domain-packs/inject-rules.ts +74 -0
- package/src/domain-packs/knowledge-installer.ts +116 -0
- package/src/domain-packs/loader.ts +124 -0
- package/src/domain-packs/pack-runtime.ts +99 -0
- package/src/domain-packs/skills-installer.ts +56 -0
- package/src/domain-packs/token-resolver.ts +126 -0
- package/src/domain-packs/types.ts +229 -0
- package/src/engine/__tests__/register-engine.test.ts +104 -0
- package/src/engine/bin/soleri-engine.ts +217 -0
- package/src/engine/core-ops.ts +178 -0
- package/src/engine/index.ts +19 -0
- package/src/engine/register-engine.ts +385 -0
- package/src/engine/test-helpers.ts +83 -0
- package/src/flows/context-router.ts +257 -0
- package/src/flows/dispatch-registry.ts +80 -0
- package/src/flows/epilogue.ts +65 -0
- package/src/flows/executor.ts +182 -0
- package/src/flows/gate-evaluator.ts +171 -0
- package/src/flows/index.ts +52 -0
- package/src/flows/loader.ts +63 -0
- package/src/flows/plan-builder.ts +250 -0
- package/src/flows/probes.ts +70 -0
- package/src/flows/types.ts +217 -0
- package/src/index.ts +68 -1
- package/src/intelligence/loader.ts +96 -5
- package/src/intelligence/types.ts +1 -0
- package/src/packs/types.ts +19 -0
- package/src/playbooks/generic/onboarding.ts +79 -0
- package/src/playbooks/playbook-registry.ts +2 -0
- package/src/runtime/admin-extra-ops.ts +14 -8
- package/src/runtime/admin-ops.ts +4 -4
- package/src/runtime/capture-ops.ts +40 -1
- package/src/runtime/domain-ops.ts +92 -7
- package/src/runtime/facades/cognee-facade.ts +3 -1
- package/src/runtime/facades/index.ts +12 -6
- package/src/runtime/facades/vault-facade.ts +2 -0
- package/src/runtime/orchestrate-ops.ts +271 -62
- package/src/runtime/runtime.ts +27 -18
- package/src/runtime/types.ts +6 -2
- package/src/runtime/vault-linking-ops.ts +454 -0
- package/src/vault/linking.ts +333 -0
- package/src/vault/vault-types.ts +46 -0
- package/src/vault/vault.ts +94 -7
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Registry — runtime resolution engine for the three-layer architecture.
|
|
3
|
+
*
|
|
4
|
+
* Maps capability IDs (domain.action) to pack handlers. Resolves dependencies,
|
|
5
|
+
* checks availability, and supports graceful degradation when capabilities are
|
|
6
|
+
* missing.
|
|
7
|
+
*
|
|
8
|
+
* Registration flow:
|
|
9
|
+
* 1. Pack manifest declares capabilities (static, serializable)
|
|
10
|
+
* 2. Pack's onActivate() provides handlers (runtime, async)
|
|
11
|
+
* 3. registerPack() reconciles declarations with handlers
|
|
12
|
+
*
|
|
13
|
+
* @see docs/architecture/capability-packs.md
|
|
14
|
+
*/
|
|
15
|
+
import type { CapabilityDefinition, CapabilityHandler, RegisteredCapability, ResolvedCapability, PackSuggestion, FlowValidation } from './types.js';
|
|
16
|
+
export interface FlowForValidation {
|
|
17
|
+
steps: Array<{
|
|
18
|
+
needs?: string[];
|
|
19
|
+
chains?: string[];
|
|
20
|
+
}>;
|
|
21
|
+
onMissingCapability?: {
|
|
22
|
+
default?: string;
|
|
23
|
+
blocking?: string[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare class CapabilityRegistry {
|
|
27
|
+
private capabilities;
|
|
28
|
+
private packs;
|
|
29
|
+
/**
|
|
30
|
+
* Register all capabilities from an installed pack.
|
|
31
|
+
*
|
|
32
|
+
* For each definition in `definitions`, the corresponding handler is looked
|
|
33
|
+
* up in `handlers`. If no handler is found the capability is skipped with a
|
|
34
|
+
* warning. When multiple packs provide the same capability, providers are
|
|
35
|
+
* sorted by priority (descending) — highest priority wins on resolve().
|
|
36
|
+
*
|
|
37
|
+
* @param packId - Unique identifier for the pack
|
|
38
|
+
* @param definitions - Capability definitions from the pack manifest
|
|
39
|
+
* @param handlers - Map of capabilityId → handler from onActivate()
|
|
40
|
+
* @param priority - Higher = preferred (core=100, user=75, domain=50, fallback=0)
|
|
41
|
+
*/
|
|
42
|
+
registerPack(packId: string, definitions: CapabilityDefinition[], handlers: Map<string, CapabilityHandler>, priority?: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a capability is registered (has at least one provider).
|
|
45
|
+
*/
|
|
46
|
+
has(capabilityId: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve a capability — returns the highest-priority handler, knowledge
|
|
49
|
+
* refs, and provider list. If the capability is missing or has unsatisfied
|
|
50
|
+
* dependencies, returns `available: false` with suggestions.
|
|
51
|
+
*/
|
|
52
|
+
resolve(capabilityId: string): ResolvedCapability;
|
|
53
|
+
/**
|
|
54
|
+
* List all registered capabilities grouped by domain.
|
|
55
|
+
*
|
|
56
|
+
* Domain is derived from the first segment of the capability ID
|
|
57
|
+
* (e.g., "color" from "color.validate").
|
|
58
|
+
*/
|
|
59
|
+
list(): Map<string, CapabilityDefinition[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Search registered packs for capabilities matching the requested IDs.
|
|
62
|
+
*
|
|
63
|
+
* This searches ALL packs (not just capabilities currently registered with
|
|
64
|
+
* handlers) — useful for suggesting which packs to install when a capability
|
|
65
|
+
* is missing.
|
|
66
|
+
*/
|
|
67
|
+
suggestPacksFor(capabilityIds: string[]): PackSuggestion[];
|
|
68
|
+
/**
|
|
69
|
+
* Validate a flow's capability requirements against installed packs.
|
|
70
|
+
*
|
|
71
|
+
* Reads both `needs` (v2 preferred) and `chains` (v1 deprecated) fields.
|
|
72
|
+
* For v1 chains, attempts best-effort mapping via chainToCapability().
|
|
73
|
+
*
|
|
74
|
+
* Missing capabilities are classified as either "blocking" or "degraded"
|
|
75
|
+
* based on the flow's onMissingCapability config.
|
|
76
|
+
*/
|
|
77
|
+
validateFlow(flow: FlowForValidation): FlowValidation;
|
|
78
|
+
/**
|
|
79
|
+
* Total number of registered capabilities.
|
|
80
|
+
*/
|
|
81
|
+
get size(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Total number of registered packs.
|
|
84
|
+
*/
|
|
85
|
+
get packCount(): number;
|
|
86
|
+
/**
|
|
87
|
+
* Get all registered capability IDs.
|
|
88
|
+
*/
|
|
89
|
+
ids(): string[];
|
|
90
|
+
/**
|
|
91
|
+
* Get the RegisteredCapability for a given ID, or undefined.
|
|
92
|
+
*/
|
|
93
|
+
get(capabilityId: string): RegisteredCapability | undefined;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,mBAAmB,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,KAAK,CAA2E;IAMxF;;;;;;;;;;;;OAYG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,oBAAoB,EAAE,EACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACxC,QAAQ,GAAE,MAAU,GACnB,IAAI;IA+BP;;OAEG;IACH,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;OAIG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB;IAmCjD;;;;;OAKG;IACH,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAa3C;;;;;;OAMG;IACH,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAqB1D;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc;IAyDrD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,EAAE;IAIf;;OAEG;IACH,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;CAG5D"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Registry — runtime resolution engine for the three-layer architecture.
|
|
3
|
+
*
|
|
4
|
+
* Maps capability IDs (domain.action) to pack handlers. Resolves dependencies,
|
|
5
|
+
* checks availability, and supports graceful degradation when capabilities are
|
|
6
|
+
* missing.
|
|
7
|
+
*
|
|
8
|
+
* Registration flow:
|
|
9
|
+
* 1. Pack manifest declares capabilities (static, serializable)
|
|
10
|
+
* 2. Pack's onActivate() provides handlers (runtime, async)
|
|
11
|
+
* 3. registerPack() reconciles declarations with handlers
|
|
12
|
+
*
|
|
13
|
+
* @see docs/architecture/capability-packs.md
|
|
14
|
+
*/
|
|
15
|
+
import { chainToCapability } from './chain-mapping.js';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Registry
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
export class CapabilityRegistry {
|
|
20
|
+
capabilities = new Map();
|
|
21
|
+
packs = new Map();
|
|
22
|
+
// -----------------------------------------------------------------------
|
|
23
|
+
// Registration
|
|
24
|
+
// -----------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Register all capabilities from an installed pack.
|
|
27
|
+
*
|
|
28
|
+
* For each definition in `definitions`, the corresponding handler is looked
|
|
29
|
+
* up in `handlers`. If no handler is found the capability is skipped with a
|
|
30
|
+
* warning. When multiple packs provide the same capability, providers are
|
|
31
|
+
* sorted by priority (descending) — highest priority wins on resolve().
|
|
32
|
+
*
|
|
33
|
+
* @param packId - Unique identifier for the pack
|
|
34
|
+
* @param definitions - Capability definitions from the pack manifest
|
|
35
|
+
* @param handlers - Map of capabilityId → handler from onActivate()
|
|
36
|
+
* @param priority - Higher = preferred (core=100, user=75, domain=50, fallback=0)
|
|
37
|
+
*/
|
|
38
|
+
registerPack(packId, definitions, handlers, priority = 0) {
|
|
39
|
+
for (const definition of definitions) {
|
|
40
|
+
const handler = handlers.get(definition.id);
|
|
41
|
+
if (!handler) {
|
|
42
|
+
console.warn(`Pack "${packId}" declares capability "${definition.id}" but no handler provided — skipping`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const existing = this.capabilities.get(definition.id);
|
|
46
|
+
if (existing) {
|
|
47
|
+
// Add as additional provider, keep sorted by priority descending
|
|
48
|
+
existing.providers.push({ packId, handler, priority });
|
|
49
|
+
existing.providers.sort((a, b) => b.priority - a.priority);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.capabilities.set(definition.id, {
|
|
53
|
+
definition,
|
|
54
|
+
providers: [{ packId, handler, priority }],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Store pack metadata for suggestPacksFor() lookups
|
|
59
|
+
this.packs.set(packId, { id: packId, capabilities: definitions });
|
|
60
|
+
}
|
|
61
|
+
// -----------------------------------------------------------------------
|
|
62
|
+
// Query
|
|
63
|
+
// -----------------------------------------------------------------------
|
|
64
|
+
/**
|
|
65
|
+
* Check if a capability is registered (has at least one provider).
|
|
66
|
+
*/
|
|
67
|
+
has(capabilityId) {
|
|
68
|
+
return this.capabilities.has(capabilityId);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolve a capability — returns the highest-priority handler, knowledge
|
|
72
|
+
* refs, and provider list. If the capability is missing or has unsatisfied
|
|
73
|
+
* dependencies, returns `available: false` with suggestions.
|
|
74
|
+
*/
|
|
75
|
+
resolve(capabilityId) {
|
|
76
|
+
const registered = this.capabilities.get(capabilityId);
|
|
77
|
+
if (!registered) {
|
|
78
|
+
return {
|
|
79
|
+
available: false,
|
|
80
|
+
capabilityId,
|
|
81
|
+
suggestion: this.suggestPacksFor([capabilityId]),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Check dependency satisfaction
|
|
85
|
+
const depends = registered.definition.depends ?? [];
|
|
86
|
+
const missingDeps = depends.filter((dep) => !this.capabilities.has(dep));
|
|
87
|
+
if (missingDeps.length > 0) {
|
|
88
|
+
return {
|
|
89
|
+
available: false,
|
|
90
|
+
capabilityId,
|
|
91
|
+
missingDependencies: missingDeps,
|
|
92
|
+
suggestion: this.suggestPacksFor(missingDeps),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Resolved — return the highest-priority provider (index 0 after sort)
|
|
96
|
+
const primary = registered.providers[0];
|
|
97
|
+
return {
|
|
98
|
+
available: true,
|
|
99
|
+
capabilityId,
|
|
100
|
+
handler: primary.handler,
|
|
101
|
+
providers: registered.providers.map((p) => p.packId),
|
|
102
|
+
knowledge: registered.definition.knowledge ?? [],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* List all registered capabilities grouped by domain.
|
|
107
|
+
*
|
|
108
|
+
* Domain is derived from the first segment of the capability ID
|
|
109
|
+
* (e.g., "color" from "color.validate").
|
|
110
|
+
*/
|
|
111
|
+
list() {
|
|
112
|
+
const grouped = new Map();
|
|
113
|
+
for (const [id, registered] of this.capabilities) {
|
|
114
|
+
const domain = id.split('.')[0];
|
|
115
|
+
const group = grouped.get(domain) ?? [];
|
|
116
|
+
group.push(registered.definition);
|
|
117
|
+
grouped.set(domain, group);
|
|
118
|
+
}
|
|
119
|
+
return grouped;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Search registered packs for capabilities matching the requested IDs.
|
|
123
|
+
*
|
|
124
|
+
* This searches ALL packs (not just capabilities currently registered with
|
|
125
|
+
* handlers) — useful for suggesting which packs to install when a capability
|
|
126
|
+
* is missing.
|
|
127
|
+
*/
|
|
128
|
+
suggestPacksFor(capabilityIds) {
|
|
129
|
+
if (capabilityIds.length === 0)
|
|
130
|
+
return [];
|
|
131
|
+
const idSet = new Set(capabilityIds);
|
|
132
|
+
const suggestions = [];
|
|
133
|
+
for (const [, pack] of this.packs) {
|
|
134
|
+
const provides = pack.capabilities.filter((cap) => idSet.has(cap.id)).map((cap) => cap.id);
|
|
135
|
+
if (provides.length > 0) {
|
|
136
|
+
suggestions.push({ packId: pack.id, provides });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return suggestions;
|
|
140
|
+
}
|
|
141
|
+
// -----------------------------------------------------------------------
|
|
142
|
+
// Validation
|
|
143
|
+
// -----------------------------------------------------------------------
|
|
144
|
+
/**
|
|
145
|
+
* Validate a flow's capability requirements against installed packs.
|
|
146
|
+
*
|
|
147
|
+
* Reads both `needs` (v2 preferred) and `chains` (v1 deprecated) fields.
|
|
148
|
+
* For v1 chains, attempts best-effort mapping via chainToCapability().
|
|
149
|
+
*
|
|
150
|
+
* Missing capabilities are classified as either "blocking" or "degraded"
|
|
151
|
+
* based on the flow's onMissingCapability config.
|
|
152
|
+
*/
|
|
153
|
+
validateFlow(flow) {
|
|
154
|
+
// Collect all capability IDs needed across all steps
|
|
155
|
+
const needed = new Set();
|
|
156
|
+
for (const step of flow.steps) {
|
|
157
|
+
// v2: needs field (preferred)
|
|
158
|
+
if (step.needs) {
|
|
159
|
+
for (const cap of step.needs) {
|
|
160
|
+
needed.add(cap);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// v1: chains field (deprecated, best-effort mapping)
|
|
164
|
+
if (step.chains) {
|
|
165
|
+
for (const chain of step.chains) {
|
|
166
|
+
const capId = chainToCapability(chain);
|
|
167
|
+
if (capId)
|
|
168
|
+
needed.add(capId);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Partition into available vs missing
|
|
173
|
+
const available = [];
|
|
174
|
+
const missing = [];
|
|
175
|
+
for (const capId of needed) {
|
|
176
|
+
if (this.has(capId)) {
|
|
177
|
+
available.push(capId);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
missing.push(capId);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Classify missing capabilities by impact
|
|
184
|
+
const blockingSet = new Set(flow.onMissingCapability?.blocking ?? []);
|
|
185
|
+
const degraded = missing.map((capability) => ({
|
|
186
|
+
capability,
|
|
187
|
+
impact: blockingSet.has(capability) ? 'blocking' : 'degraded',
|
|
188
|
+
suggestion: this.suggestPacksFor([capability]),
|
|
189
|
+
}));
|
|
190
|
+
const hasBlocker = degraded.some((d) => d.impact === 'blocking');
|
|
191
|
+
return {
|
|
192
|
+
valid: missing.length === 0,
|
|
193
|
+
available,
|
|
194
|
+
missing,
|
|
195
|
+
degraded,
|
|
196
|
+
canRunPartially: !hasBlocker,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
// -----------------------------------------------------------------------
|
|
200
|
+
// Inspection (useful for debugging / CLI commands)
|
|
201
|
+
// -----------------------------------------------------------------------
|
|
202
|
+
/**
|
|
203
|
+
* Total number of registered capabilities.
|
|
204
|
+
*/
|
|
205
|
+
get size() {
|
|
206
|
+
return this.capabilities.size;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Total number of registered packs.
|
|
210
|
+
*/
|
|
211
|
+
get packCount() {
|
|
212
|
+
return this.packs.size;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get all registered capability IDs.
|
|
216
|
+
*/
|
|
217
|
+
ids() {
|
|
218
|
+
return [...this.capabilities.keys()];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get the RegisteredCapability for a given ID, or undefined.
|
|
222
|
+
*/
|
|
223
|
+
get(capabilityId) {
|
|
224
|
+
return this.capabilities.get(capabilityId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkBvD,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,OAAO,kBAAkB;IACrB,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,GAAG,IAAI,GAAG,EAAgE,CAAC;IAExF,0EAA0E;IAC1E,eAAe;IACf,0EAA0E;IAE1E;;;;;;;;;;;;OAYG;IACH,YAAY,CACV,MAAc,EACd,WAAmC,EACnC,QAAwC,EACxC,WAAmB,CAAC;QAEpB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,SAAS,MAAM,0BAA0B,UAAU,CAAC,EAAE,sCAAsC,CAC7F,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,iEAAiE;gBACjE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE;oBACnC,UAAU;oBACV,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,0EAA0E;IAC1E,QAAQ;IACR,0EAA0E;IAE1E;;OAEG;IACH,GAAG,CAAC,YAAoB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,YAAoB;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,YAAY;gBACZ,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,YAAY;gBACZ,mBAAmB,EAAE,WAAW;gBAChC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;aAC9C,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,YAAY;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACpD,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE;SACjD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;QAE1D,KAAK,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,aAAuB;QACrC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,WAAW,GAAqB,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAE3F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,0EAA0E;IAC1E,aAAa;IACb,0EAA0E;IAE1E;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAuB;QAClC,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,8BAA8B;YAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,KAAK;wBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5C,UAAU;YACV,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAoB,CAAC,CAAC,CAAE,UAAoB;YACnF,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;SAC/C,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAEjE,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3B,SAAS;YACT,OAAO;YACP,QAAQ;YACR,eAAe,EAAE,CAAC,UAAU;SAC7B,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,mDAAmD;IACnD,0EAA0E;IAE1E;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,YAAoB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability type system for Soleri's three-layer architecture.
|
|
3
|
+
*
|
|
4
|
+
* Capabilities are the atomic unit of agent functionality — what the agent
|
|
5
|
+
* CAN DO, not which tool it calls. Flows reference capabilities by intent
|
|
6
|
+
* (e.g., "color.validate"), and the registry resolves them to pack handlers
|
|
7
|
+
* at runtime.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/architecture/capability-packs.md
|
|
10
|
+
*/
|
|
11
|
+
import type { PackRuntime } from '../domain-packs/pack-runtime.js';
|
|
12
|
+
import type { IntelligenceEntry } from '../intelligence/types.js';
|
|
13
|
+
export interface CapabilityDefinition {
|
|
14
|
+
/** Namespaced ID: domain.action (e.g., "color.validate", "token.check") */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Human-readable description of what this capability does */
|
|
17
|
+
description: string;
|
|
18
|
+
/** What this capability produces (output contract) */
|
|
19
|
+
provides: string[];
|
|
20
|
+
/** What this capability requires as input */
|
|
21
|
+
requires: string[];
|
|
22
|
+
/** Other capabilities that must be available (auto-resolved) */
|
|
23
|
+
depends?: string[];
|
|
24
|
+
/** Vault knowledge entry IDs to auto-load when this capability runs */
|
|
25
|
+
knowledge?: string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Capability handler — the actual implementation.
|
|
29
|
+
*
|
|
30
|
+
* Declared separately from CapabilityDefinition because:
|
|
31
|
+
* - Manifest declares the definition (static, serializable)
|
|
32
|
+
* - Pack's onActivate() registers the handler (runtime, async)
|
|
33
|
+
*/
|
|
34
|
+
export type CapabilityHandler = (params: Record<string, unknown>, context: CapabilityContext) => Promise<CapabilityResult>;
|
|
35
|
+
/**
|
|
36
|
+
* CapabilityContext — extends PackRuntime with knowledge and composition.
|
|
37
|
+
*
|
|
38
|
+
* PackRuntime already provides: vault, getProject, listProjects, createCheck,
|
|
39
|
+
* validateCheck, validateAndConsume. This adds:
|
|
40
|
+
* - knowledge: auto-loaded from pack bundle + user vault
|
|
41
|
+
* - brain: recommendations from the learning loop
|
|
42
|
+
* - invoke: call another capability (composition)
|
|
43
|
+
*/
|
|
44
|
+
export interface CapabilityContext {
|
|
45
|
+
/** Pack runtime (vault, projects, checks) — from existing PackRuntime */
|
|
46
|
+
runtime: PackRuntime;
|
|
47
|
+
/** Auto-loaded knowledge from pack + user vault */
|
|
48
|
+
knowledge: KnowledgeContext;
|
|
49
|
+
/** Brain recommendations for this capability */
|
|
50
|
+
brain: BrainRecommendation[];
|
|
51
|
+
/** Request another capability (for composition) */
|
|
52
|
+
invoke: (capabilityId: string, params: Record<string, unknown>) => Promise<CapabilityResult>;
|
|
53
|
+
}
|
|
54
|
+
export interface CapabilityResult {
|
|
55
|
+
success: boolean;
|
|
56
|
+
data: Record<string, unknown>;
|
|
57
|
+
/** Which "provides" fields were actually produced */
|
|
58
|
+
produced: string[];
|
|
59
|
+
}
|
|
60
|
+
export interface KnowledgeContext {
|
|
61
|
+
/** Entries from the pack's bundled knowledge (IntelligenceBundle) */
|
|
62
|
+
pack: IntelligenceEntry[];
|
|
63
|
+
/** Entries from user's project vault (searched by capability's knowledge[] IDs) */
|
|
64
|
+
vault: IntelligenceEntry[];
|
|
65
|
+
/** Combined, deduplicated, ranked by relevance */
|
|
66
|
+
merged: IntelligenceEntry[];
|
|
67
|
+
}
|
|
68
|
+
export interface BrainRecommendation {
|
|
69
|
+
pattern: string;
|
|
70
|
+
strength: number;
|
|
71
|
+
source: string;
|
|
72
|
+
}
|
|
73
|
+
export interface RegisteredCapability {
|
|
74
|
+
definition: CapabilityDefinition;
|
|
75
|
+
providers: Array<{
|
|
76
|
+
packId: string;
|
|
77
|
+
handler: CapabilityHandler;
|
|
78
|
+
/** Higher = preferred (see Multi-Provider Resolution in RFC) */
|
|
79
|
+
priority: number;
|
|
80
|
+
}>;
|
|
81
|
+
}
|
|
82
|
+
export interface ResolvedCapability {
|
|
83
|
+
available: boolean;
|
|
84
|
+
capabilityId: string;
|
|
85
|
+
handler?: CapabilityHandler;
|
|
86
|
+
providers?: string[];
|
|
87
|
+
knowledge?: string[];
|
|
88
|
+
missingDependencies?: string[];
|
|
89
|
+
suggestion?: PackSuggestion[];
|
|
90
|
+
}
|
|
91
|
+
export interface PackSuggestion {
|
|
92
|
+
packId: string;
|
|
93
|
+
provides: string[];
|
|
94
|
+
}
|
|
95
|
+
export interface FlowValidation {
|
|
96
|
+
valid: boolean;
|
|
97
|
+
available: string[];
|
|
98
|
+
missing: string[];
|
|
99
|
+
degraded: Array<{
|
|
100
|
+
capability: string;
|
|
101
|
+
impact: 'blocking' | 'degraded' | 'optional';
|
|
102
|
+
suggestion: PackSuggestion[];
|
|
103
|
+
}>;
|
|
104
|
+
canRunPartially: boolean;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability type system for Soleri's three-layer architecture.
|
|
3
|
+
*
|
|
4
|
+
* Capabilities are the atomic unit of agent functionality — what the agent
|
|
5
|
+
* CAN DO, not which tool it calls. Flows reference capabilities by intent
|
|
6
|
+
* (e.g., "color.validate"), and the registry resolves them to pack handlers
|
|
7
|
+
* at runtime.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/architecture/capability-packs.md
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-router.d.ts","sourceRoot":"","sources":["../../src/control/intent-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAEV,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"intent-router.d.ts","sourceRoot":"","sources":["../../src/control/intent-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAEV,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;AAuHpB,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,WAAW,CAAmC;gBAE1C,KAAK,EAAE,KAAK;IASxB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,gBAAgB;IAoBxB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAiDjD,OAAO,CAAC,UAAU;IAgBlB,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW;IAczC,cAAc,IAAI,eAAe;IAIjC,gBAAgB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE;IAWlD,QAAQ,IAAI,UAAU,EAAE;IAKxB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IActC,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAY7D,eAAe,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC;CAuBF"}
|
|
@@ -7,6 +7,42 @@
|
|
|
7
7
|
* 10 default modes seeded on first use via INSERT OR IGNORE.
|
|
8
8
|
* Agents can register custom modes at runtime.
|
|
9
9
|
*/
|
|
10
|
+
// ─── Token Stemming ─────────────────────────────────────────────────
|
|
11
|
+
// Lightweight suffix stripping for intent matching.
|
|
12
|
+
// Handles: "crashes" → "crash", "deploying" → "deploy", "broken" → "broke",
|
|
13
|
+
// "issues" → "issue", "building" → "build", "optimizing" → "optimize"
|
|
14
|
+
function stemToken(token) {
|
|
15
|
+
if (token.length < 4)
|
|
16
|
+
return token;
|
|
17
|
+
// Order matters — check longer suffixes first
|
|
18
|
+
if (token.endsWith('ying'))
|
|
19
|
+
return token.slice(0, -4) + 'y'; // deploying → deploy
|
|
20
|
+
if (token.endsWith('izing'))
|
|
21
|
+
return token.slice(0, -3) + 'e'; // optimizing → optimize
|
|
22
|
+
if (token.endsWith('ating'))
|
|
23
|
+
return token.slice(0, -3) + 'e'; // creating → create
|
|
24
|
+
if (token.endsWith('ting'))
|
|
25
|
+
return token.slice(0, -4) + 't'; // getting → get (approx)
|
|
26
|
+
if (token.endsWith('ning'))
|
|
27
|
+
return token.slice(0, -4) + 'n'; // planning → plan (approx)
|
|
28
|
+
if (token.endsWith('ing'))
|
|
29
|
+
return token.slice(0, -3); // fixing → fix, building → build
|
|
30
|
+
if (token.endsWith('ies'))
|
|
31
|
+
return token.slice(0, -3) + 'y'; // queries → query
|
|
32
|
+
if (token.endsWith('shes'))
|
|
33
|
+
return token.slice(0, -2); // crashes → crash
|
|
34
|
+
if (token.endsWith('ches'))
|
|
35
|
+
return token.slice(0, -2); // searches → search
|
|
36
|
+
if (token.endsWith('ses'))
|
|
37
|
+
return token.slice(0, -2); // releases → releas (close enough)
|
|
38
|
+
if (token.endsWith('es') && token.length > 4)
|
|
39
|
+
return token.slice(0, -1); // issues → issue
|
|
40
|
+
if (token.endsWith('ed') && token.length > 4)
|
|
41
|
+
return token.slice(0, -2); // fixed → fix
|
|
42
|
+
if (token.endsWith('s') && !token.endsWith('ss') && token.length > 3)
|
|
43
|
+
return token.slice(0, -1); // bugs → bug
|
|
44
|
+
return token;
|
|
45
|
+
}
|
|
10
46
|
// ─── Default Mode Definitions ───────────────────────────────────────
|
|
11
47
|
const DEFAULT_MODES = [
|
|
12
48
|
{
|
|
@@ -21,7 +57,23 @@ const DEFAULT_MODES = [
|
|
|
21
57
|
intent: 'fix',
|
|
22
58
|
description: 'Fixing bugs, errors, and broken behavior',
|
|
23
59
|
behaviorRules: ['Identify root cause first', 'Verify fix with tests', 'Check for regressions'],
|
|
24
|
-
keywords: [
|
|
60
|
+
keywords: [
|
|
61
|
+
'fix',
|
|
62
|
+
'bug',
|
|
63
|
+
'broken',
|
|
64
|
+
'error',
|
|
65
|
+
'crash',
|
|
66
|
+
'issue',
|
|
67
|
+
'debug',
|
|
68
|
+
'repair',
|
|
69
|
+
'janky',
|
|
70
|
+
'fail',
|
|
71
|
+
'wrong',
|
|
72
|
+
'stuck',
|
|
73
|
+
'regression',
|
|
74
|
+
'fault',
|
|
75
|
+
'defect',
|
|
76
|
+
],
|
|
25
77
|
},
|
|
26
78
|
{
|
|
27
79
|
mode: 'VALIDATE-MODE',
|
|
@@ -129,7 +181,11 @@ export class IntentRouter {
|
|
|
129
181
|
}
|
|
130
182
|
// ─── Intent Classification ──────────────────────────────────────────
|
|
131
183
|
routeIntent(prompt) {
|
|
132
|
-
const
|
|
184
|
+
const rawTokens = prompt.toLowerCase().split(/\s+/).filter(Boolean);
|
|
185
|
+
// Stem tokens: strip common suffixes for fuzzy matching
|
|
186
|
+
// "crashes" → "crash", "broken" stays "broken", "deploying" → "deploy"
|
|
187
|
+
const stemmed = rawTokens.map((t) => stemToken(t));
|
|
188
|
+
const tokens = new Set([...rawTokens, ...stemmed]);
|
|
133
189
|
const modes = this.getModes();
|
|
134
190
|
let bestMode = null;
|
|
135
191
|
let bestMatchCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-router.js","sourceRoot":"","sources":["../../src/control/intent-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,uEAAuE;AAEvE,MAAM,aAAa,GAAiB;IAClC;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,mDAAmD;QAChE,aAAa,EAAE,CAAC,6BAA6B,EAAE,0BAA0B,EAAE,aAAa,CAAC;QACzF,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;KAC5F;IACD;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,0CAA0C;QACvD,aAAa,EAAE,CAAC,2BAA2B,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;QAC9F,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"intent-router.js","sourceRoot":"","sources":["../../src/control/intent-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { type DomainPack, type DomainPackManifest, type DomainPackRef, type KnowledgeManifest, type PackSkillDefinition, type ValidateResult, validateDomainPack, SEMANTIC_FACADE_NAMES, } from './types.js';
|
|
2
|
+
export { loadDomainPack, loadDomainPacksFromConfig, resolveDependencies } from './loader.js';
|
|
3
|
+
export { installKnowledge, type KnowledgeInstallResult } from './knowledge-installer.js';
|
|
4
|
+
export { installSkills, type SkillsInstallResult } from './skills-installer.js';
|
|
5
|
+
export { injectDomainRules, removeDomainRules } from './inject-rules.js';
|
|
6
|
+
export { type PackRuntime, type PackProjectContext, type PackCheckContext, createPackRuntime, } from './pack-runtime.js';
|
|
7
|
+
export { resolveToken, listProjectTokens, buildReverseIndex } from './token-resolver.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain-packs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { validateDomainPack, SEMANTIC_FACADE_NAMES, } from './types.js';
|
|
2
|
+
export { loadDomainPack, loadDomainPacksFromConfig, resolveDependencies } from './loader.js';
|
|
3
|
+
export { installKnowledge } from './knowledge-installer.js';
|
|
4
|
+
export { installSkills } from './skills-installer.js';
|
|
5
|
+
export { injectDomainRules, removeDomainRules } from './inject-rules.js';
|
|
6
|
+
export { createPackRuntime, } from './pack-runtime.js';
|
|
7
|
+
export { resolveToken, listProjectTokens, buildReverseIndex } from './token-resolver.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain-packs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AAEzF,OAAO,EAAE,aAAa,EAA4B,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAIL,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain-level CLAUDE.md injection for domain packs.
|
|
3
|
+
*
|
|
4
|
+
* Each pack can inject behavioral rules under its own marker:
|
|
5
|
+
* <!-- domain:packName --> ... <!-- /domain:packName -->
|
|
6
|
+
*
|
|
7
|
+
* Injection is idempotent — existing content between markers is replaced.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Inject domain rules into a CLAUDE.md file.
|
|
11
|
+
*
|
|
12
|
+
* @param filePath - Path to CLAUDE.md
|
|
13
|
+
* @param packName - Domain pack name (used in markers)
|
|
14
|
+
* @param rulesContent - Markdown content to inject
|
|
15
|
+
*/
|
|
16
|
+
export declare function injectDomainRules(filePath: string, packName: string, rulesContent: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Remove domain rules from a CLAUDE.md file.
|
|
19
|
+
*
|
|
20
|
+
* @param filePath - Path to CLAUDE.md
|
|
21
|
+
* @param packName - Domain pack name
|
|
22
|
+
*/
|
|
23
|
+
export declare function removeDomainRules(filePath: string, packName: string): void;
|
|
24
|
+
//# sourceMappingURL=inject-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-rules.d.ts","sourceRoot":"","sources":["../../src/domain-packs/inject-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CA4BhG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAgB1E"}
|