@soleri/core 9.6.0 → 9.7.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/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/packs/index.d.ts +1 -1
- package/dist/packs/index.d.ts.map +1 -1
- package/dist/packs/index.js.map +1 -1
- package/dist/packs/types.d.ts +69 -42
- package/dist/packs/types.d.ts.map +1 -1
- package/dist/packs/types.js.map +1 -1
- package/dist/planning/github-projection.d.ts +3 -1
- package/dist/planning/github-projection.d.ts.map +1 -1
- package/dist/planning/github-projection.js +5 -1
- package/dist/planning/github-projection.js.map +1 -1
- package/dist/planning/goal-ancestry.d.ts +72 -0
- package/dist/planning/goal-ancestry.d.ts.map +1 -0
- package/dist/planning/goal-ancestry.js +137 -0
- package/dist/planning/goal-ancestry.js.map +1 -0
- package/dist/planning/plan-lifecycle.d.ts +2 -0
- package/dist/planning/plan-lifecycle.d.ts.map +1 -1
- package/dist/planning/plan-lifecycle.js +1 -0
- package/dist/planning/plan-lifecycle.js.map +1 -1
- package/dist/planning/planner-types.d.ts +2 -0
- package/dist/planning/planner-types.d.ts.map +1 -1
- package/dist/runtime/context-health.d.ts +14 -1
- package/dist/runtime/context-health.d.ts.map +1 -1
- package/dist/runtime/context-health.js +30 -2
- package/dist/runtime/context-health.js.map +1 -1
- package/dist/session/compaction-evaluator.d.ts +20 -0
- package/dist/session/compaction-evaluator.d.ts.map +1 -0
- package/dist/session/compaction-evaluator.js +73 -0
- package/dist/session/compaction-evaluator.js.map +1 -0
- package/dist/session/compaction-policy.d.ts +50 -0
- package/dist/session/compaction-policy.d.ts.map +1 -0
- package/dist/session/compaction-policy.js +17 -0
- package/dist/session/compaction-policy.js.map +1 -0
- package/dist/session/handoff-renderer.d.ts +22 -0
- package/dist/session/handoff-renderer.d.ts.map +1 -0
- package/dist/session/handoff-renderer.js +49 -0
- package/dist/session/handoff-renderer.js.map +1 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/policy-resolver.d.ts +20 -0
- package/dist/session/policy-resolver.d.ts.map +1 -0
- package/dist/session/policy-resolver.js +28 -0
- package/dist/session/policy-resolver.js.map +1 -0
- package/dist/skills/sync-skills.d.ts +27 -0
- package/dist/skills/sync-skills.d.ts.map +1 -1
- package/dist/skills/sync-skills.js +92 -1
- package/dist/skills/sync-skills.js.map +1 -1
- package/dist/skills/trust-classifier.d.ts +32 -0
- package/dist/skills/trust-classifier.d.ts.map +1 -0
- package/dist/skills/trust-classifier.js +109 -0
- package/dist/skills/trust-classifier.js.map +1 -0
- package/dist/subagent/dispatcher.d.ts +4 -0
- package/dist/subagent/dispatcher.d.ts.map +1 -1
- package/dist/subagent/dispatcher.js +14 -2
- package/dist/subagent/dispatcher.js.map +1 -1
- package/package.json +1 -4
- package/src/index.ts +40 -0
- package/src/packs/index.ts +4 -0
- package/src/packs/types.ts +32 -0
- package/src/planning/github-projection.ts +6 -0
- package/src/planning/goal-ancestry.test.ts +427 -0
- package/src/planning/goal-ancestry.ts +187 -0
- package/src/planning/plan-lifecycle.ts +3 -0
- package/src/planning/planner-types.ts +2 -0
- package/src/runtime/context-health.ts +42 -2
- package/src/session/compaction-evaluator.ts +87 -0
- package/src/session/compaction-policy.ts +66 -0
- package/src/session/compaction.test.ts +259 -0
- package/src/session/handoff-renderer.ts +56 -0
- package/src/session/index.ts +12 -0
- package/src/session/policy-resolver.ts +34 -0
- package/src/skills/sync-skills.ts +114 -1
- package/src/skills/trust-classifier.test.ts +252 -0
- package/src/skills/trust-classifier.ts +127 -0
- package/src/subagent/dispatcher.ts +18 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handoff Renderer — converts a HandoffNote into markdown for injection
|
|
3
|
+
* into the next session's context.
|
|
4
|
+
*
|
|
5
|
+
* Omits empty sections gracefully.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Render a HandoffNote as markdown.
|
|
9
|
+
*
|
|
10
|
+
* Sections:
|
|
11
|
+
* - Session Handoff (header)
|
|
12
|
+
* - Rotated At
|
|
13
|
+
* - Reason
|
|
14
|
+
* - In Progress
|
|
15
|
+
* - Key Decisions
|
|
16
|
+
* - Files Modified
|
|
17
|
+
*
|
|
18
|
+
* Empty sections are omitted entirely.
|
|
19
|
+
*/
|
|
20
|
+
export function renderHandoff(note) {
|
|
21
|
+
const lines = ['# Session Handoff', ''];
|
|
22
|
+
lines.push(`**Rotated:** ${note.rotatedAt}`);
|
|
23
|
+
lines.push(`**Reason:** ${note.reason}`);
|
|
24
|
+
lines.push('');
|
|
25
|
+
if (note.inProgress) {
|
|
26
|
+
lines.push('## In Progress');
|
|
27
|
+
lines.push('');
|
|
28
|
+
lines.push(note.inProgress);
|
|
29
|
+
lines.push('');
|
|
30
|
+
}
|
|
31
|
+
if (note.keyDecisions.length > 0) {
|
|
32
|
+
lines.push('## Key Decisions');
|
|
33
|
+
lines.push('');
|
|
34
|
+
for (const decision of note.keyDecisions) {
|
|
35
|
+
lines.push(`- ${decision}`);
|
|
36
|
+
}
|
|
37
|
+
lines.push('');
|
|
38
|
+
}
|
|
39
|
+
if (note.filesModified.length > 0) {
|
|
40
|
+
lines.push('## Files Modified');
|
|
41
|
+
lines.push('');
|
|
42
|
+
for (const file of note.filesModified) {
|
|
43
|
+
lines.push(`- \`${file}\``);
|
|
44
|
+
}
|
|
45
|
+
lines.push('');
|
|
46
|
+
}
|
|
47
|
+
return lines.join('\n').trimEnd() + '\n';
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=handoff-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff-renderer.js","sourceRoot":"","sources":["../../src/session/handoff-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,MAAM,KAAK,GAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAElD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { CompactionPolicy, CompactionResult, SessionState, HandoffNote, } from './compaction-policy.js';
|
|
2
|
+
export { ENGINE_DEFAULTS } from './compaction-policy.js';
|
|
3
|
+
export { shouldCompact, parseDuration } from './compaction-evaluator.js';
|
|
4
|
+
export { resolvePolicy } from './policy-resolver.js';
|
|
5
|
+
export { renderHandoff } from './handoff-renderer.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ENGINE_DEFAULTS } from './compaction-policy.js';
|
|
2
|
+
export { shouldCompact, parseDuration } from './compaction-evaluator.js';
|
|
3
|
+
export { resolvePolicy } from './policy-resolver.js';
|
|
4
|
+
export { renderHandoff } from './handoff-renderer.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Resolver — three-level merge for compaction policies.
|
|
3
|
+
*
|
|
4
|
+
* Merge order (highest to lowest priority):
|
|
5
|
+
* 1. Agent config (agent.yaml → engine.compactionPolicy)
|
|
6
|
+
* 2. Adapter defaults (runtime adapter may provide defaults)
|
|
7
|
+
* 3. Engine defaults (hardcoded fallback)
|
|
8
|
+
*
|
|
9
|
+
* Individual fields override — not whole-object replacement.
|
|
10
|
+
*/
|
|
11
|
+
import type { CompactionPolicy } from './compaction-policy.js';
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a final CompactionPolicy by merging three levels.
|
|
14
|
+
*
|
|
15
|
+
* Each level can provide partial overrides. Fields from higher-priority
|
|
16
|
+
* levels win over lower-priority ones. Missing fields fall through to
|
|
17
|
+
* the next level, bottoming out at ENGINE_DEFAULTS.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolvePolicy(agentConfig?: Partial<CompactionPolicy>, adapterDefaults?: Partial<CompactionPolicy>): Required<CompactionPolicy>;
|
|
20
|
+
//# sourceMappingURL=policy-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-resolver.d.ts","sourceRoot":"","sources":["../../src/session/policy-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACvC,eAAe,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAC1C,QAAQ,CAAC,gBAAgB,CAAC,CAS5B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Resolver — three-level merge for compaction policies.
|
|
3
|
+
*
|
|
4
|
+
* Merge order (highest to lowest priority):
|
|
5
|
+
* 1. Agent config (agent.yaml → engine.compactionPolicy)
|
|
6
|
+
* 2. Adapter defaults (runtime adapter may provide defaults)
|
|
7
|
+
* 3. Engine defaults (hardcoded fallback)
|
|
8
|
+
*
|
|
9
|
+
* Individual fields override — not whole-object replacement.
|
|
10
|
+
*/
|
|
11
|
+
import { ENGINE_DEFAULTS } from './compaction-policy.js';
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a final CompactionPolicy by merging three levels.
|
|
14
|
+
*
|
|
15
|
+
* Each level can provide partial overrides. Fields from higher-priority
|
|
16
|
+
* levels win over lower-priority ones. Missing fields fall through to
|
|
17
|
+
* the next level, bottoming out at ENGINE_DEFAULTS.
|
|
18
|
+
*/
|
|
19
|
+
export function resolvePolicy(agentConfig, adapterDefaults) {
|
|
20
|
+
return {
|
|
21
|
+
maxRuns: agentConfig?.maxRuns ?? adapterDefaults?.maxRuns ?? ENGINE_DEFAULTS.maxRuns,
|
|
22
|
+
maxInputTokens: agentConfig?.maxInputTokens ??
|
|
23
|
+
adapterDefaults?.maxInputTokens ??
|
|
24
|
+
ENGINE_DEFAULTS.maxInputTokens,
|
|
25
|
+
maxAge: agentConfig?.maxAge ?? adapterDefaults?.maxAge ?? ENGINE_DEFAULTS.maxAge,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=policy-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-resolver.js","sourceRoot":"","sources":["../../src/session/policy-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAuC,EACvC,eAA2C;IAE3C,OAAO;QACL,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,eAAe,EAAE,OAAO,IAAI,eAAe,CAAC,OAAO;QACpF,cAAc,EACZ,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,cAAc;YAC/B,eAAe,CAAC,cAAc;QAChC,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,IAAI,eAAe,CAAC,MAAM;KACjF,CAAC;AACJ,CAAC"}
|
|
@@ -5,9 +5,12 @@
|
|
|
5
5
|
* Injects agent branding so users know which agent owns the skill.
|
|
6
6
|
* Called automatically at engine startup and by admin_setup_global.
|
|
7
7
|
*/
|
|
8
|
+
import type { SkillMetadata } from '../packs/types.js';
|
|
8
9
|
export interface SkillEntry {
|
|
9
10
|
name: string;
|
|
10
11
|
sourcePath: string;
|
|
12
|
+
/** Trust and source metadata (populated during classification) */
|
|
13
|
+
metadata?: SkillMetadata;
|
|
11
14
|
}
|
|
12
15
|
export interface SyncResult {
|
|
13
16
|
installed: string[];
|
|
@@ -15,6 +18,13 @@ export interface SyncResult {
|
|
|
15
18
|
skipped: string[];
|
|
16
19
|
failed: string[];
|
|
17
20
|
}
|
|
21
|
+
/** Error thrown when a skill requires approval due to scripts trust level */
|
|
22
|
+
export declare class ApprovalRequiredError extends Error {
|
|
23
|
+
readonly skillName: string;
|
|
24
|
+
readonly trust: 'scripts';
|
|
25
|
+
readonly inventory: SkillMetadata['inventory'];
|
|
26
|
+
constructor(skillName: string, inventory: SkillMetadata['inventory']);
|
|
27
|
+
}
|
|
18
28
|
/** Discover skill files (SKILL.md) in skills directories */
|
|
19
29
|
export declare function discoverSkills(skillsDirs: string[]): SkillEntry[];
|
|
20
30
|
/**
|
|
@@ -24,4 +34,21 @@ export declare function discoverSkills(skillsDirs: string[]): SkillEntry[];
|
|
|
24
34
|
* - Missing source skills leave target untouched (other agents may own them)
|
|
25
35
|
*/
|
|
26
36
|
export declare function syncSkillsToClaudeCode(skillsDirs: string[], agentName?: string): SyncResult;
|
|
37
|
+
/**
|
|
38
|
+
* Check engine version compatibility for a skill.
|
|
39
|
+
* Returns 'compatible', 'unknown' (no version specified), or 'invalid'.
|
|
40
|
+
*/
|
|
41
|
+
export declare function checkSkillCompatibility(engineVersion?: string, currentVersion?: string): 'compatible' | 'unknown' | 'invalid';
|
|
42
|
+
export interface ClassifySkillsOptions {
|
|
43
|
+
/** Current engine version for compatibility checking */
|
|
44
|
+
currentEngineVersion?: string;
|
|
45
|
+
/** Skills that have been explicitly approved for scripts trust level */
|
|
46
|
+
approvedScripts?: Set<string>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Classify skills with trust levels and source tracking.
|
|
50
|
+
* Enriches SkillEntry[] with metadata. Throws ApprovalRequiredError
|
|
51
|
+
* for skills with 'scripts' trust unless explicitly approved.
|
|
52
|
+
*/
|
|
53
|
+
export declare function classifySkills(skills: SkillEntry[], options?: ClassifySkillsOptions): SkillEntry[];
|
|
27
54
|
//# sourceMappingURL=sync-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-skills.d.ts","sourceRoot":"","sources":["../../src/skills/sync-skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"sync-skills.d.ts","sourceRoot":"","sources":["../../src/skills/sync-skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,mBAAmB,CAAC;AAInE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,6EAA6E;AAC7E,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;gBAEnC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC;CAarE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAgBjE;AAoBD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAqC3F;AAMD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,CAAC,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,YAAY,GAAG,SAAS,GAAG,SAAS,CAItC;AA+BD,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,qBAA0B,GAClC,UAAU,EAAE,CAwBd"}
|
|
@@ -6,8 +6,27 @@
|
|
|
6
6
|
* Called automatically at engine startup and by admin_setup_global.
|
|
7
7
|
*/
|
|
8
8
|
import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync, statSync } from 'node:fs';
|
|
9
|
-
import { join } from 'node:path';
|
|
9
|
+
import { join, dirname } from 'node:path';
|
|
10
10
|
import { homedir } from 'node:os';
|
|
11
|
+
import { classifyTrust } from './trust-classifier.js';
|
|
12
|
+
import { checkVersionCompat } from '../packs/resolver.js';
|
|
13
|
+
/** Error thrown when a skill requires approval due to scripts trust level */
|
|
14
|
+
export class ApprovalRequiredError extends Error {
|
|
15
|
+
skillName;
|
|
16
|
+
trust;
|
|
17
|
+
inventory;
|
|
18
|
+
constructor(skillName, inventory) {
|
|
19
|
+
super(`Skill "${skillName}" contains executable scripts and requires explicit approval. ` +
|
|
20
|
+
`Scripts found: ${inventory
|
|
21
|
+
.filter((i) => i.kind === 'script')
|
|
22
|
+
.map((i) => i.path)
|
|
23
|
+
.join(', ')}`);
|
|
24
|
+
this.name = 'ApprovalRequiredError';
|
|
25
|
+
this.skillName = skillName;
|
|
26
|
+
this.trust = 'scripts';
|
|
27
|
+
this.inventory = inventory;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
11
30
|
/** Discover skill files (SKILL.md) in skills directories */
|
|
12
31
|
export function discoverSkills(skillsDirs) {
|
|
13
32
|
const skills = [];
|
|
@@ -84,4 +103,76 @@ export function syncSkillsToClaudeCode(skillsDirs, agentName) {
|
|
|
84
103
|
}
|
|
85
104
|
return result;
|
|
86
105
|
}
|
|
106
|
+
// =============================================================================
|
|
107
|
+
// TRUST CLASSIFICATION & SOURCE TRACKING
|
|
108
|
+
// =============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Check engine version compatibility for a skill.
|
|
111
|
+
* Returns 'compatible', 'unknown' (no version specified), or 'invalid'.
|
|
112
|
+
*/
|
|
113
|
+
export function checkSkillCompatibility(engineVersion, currentVersion) {
|
|
114
|
+
if (!engineVersion)
|
|
115
|
+
return 'unknown';
|
|
116
|
+
if (!currentVersion)
|
|
117
|
+
return 'unknown';
|
|
118
|
+
return checkVersionCompat(currentVersion, engineVersion) ? 'compatible' : 'invalid';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Infer the source type for a skill based on its directory path.
|
|
122
|
+
*/
|
|
123
|
+
function inferSourceType(skillDir) {
|
|
124
|
+
if (skillDir.includes('node_modules'))
|
|
125
|
+
return 'npm';
|
|
126
|
+
if (skillDir.includes('.soleri') || skillDir.includes('.salvador'))
|
|
127
|
+
return 'builtin';
|
|
128
|
+
return 'local';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Read engine version from a skill's SKILL.md frontmatter.
|
|
132
|
+
* Looks for `engine:` or `engineVersion:` in YAML frontmatter.
|
|
133
|
+
*/
|
|
134
|
+
function readSkillEngineVersion(skillPath) {
|
|
135
|
+
try {
|
|
136
|
+
const content = readFileSync(skillPath, 'utf-8');
|
|
137
|
+
const fmStart = content.indexOf('---');
|
|
138
|
+
if (fmStart !== 0)
|
|
139
|
+
return undefined;
|
|
140
|
+
const fmEnd = content.indexOf('---', 3);
|
|
141
|
+
if (fmEnd === -1)
|
|
142
|
+
return undefined;
|
|
143
|
+
const fm = content.slice(3, fmEnd);
|
|
144
|
+
// eslint-disable-next-line no-control-regex
|
|
145
|
+
const match = fm.match(/^(?:engine|engineVersion)\s*:\s*["']?([^"'\n]+)["']?/m);
|
|
146
|
+
return match?.[1]?.trim();
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Classify skills with trust levels and source tracking.
|
|
154
|
+
* Enriches SkillEntry[] with metadata. Throws ApprovalRequiredError
|
|
155
|
+
* for skills with 'scripts' trust unless explicitly approved.
|
|
156
|
+
*/
|
|
157
|
+
export function classifySkills(skills, options = {}) {
|
|
158
|
+
return skills.map((skill) => {
|
|
159
|
+
const skillDir = dirname(skill.sourcePath);
|
|
160
|
+
const { trust, inventory } = classifyTrust(skillDir);
|
|
161
|
+
// Approval gate for scripts
|
|
162
|
+
if (trust === 'scripts' && !options.approvedScripts?.has(skill.name)) {
|
|
163
|
+
throw new ApprovalRequiredError(skill.name, inventory);
|
|
164
|
+
}
|
|
165
|
+
const engineVersion = readSkillEngineVersion(skill.sourcePath);
|
|
166
|
+
const sourceType = inferSourceType(skillDir);
|
|
167
|
+
const compatibility = checkSkillCompatibility(engineVersion, options.currentEngineVersion);
|
|
168
|
+
const metadata = {
|
|
169
|
+
trust,
|
|
170
|
+
source: { type: sourceType, uri: skillDir },
|
|
171
|
+
compatibility,
|
|
172
|
+
engineVersion,
|
|
173
|
+
inventory,
|
|
174
|
+
};
|
|
175
|
+
return { ...skill, metadata };
|
|
176
|
+
});
|
|
177
|
+
}
|
|
87
178
|
//# sourceMappingURL=sync-skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/skills/sync-skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/skills/sync-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust Classifier — scans a skill directory and determines its trust level.
|
|
3
|
+
*
|
|
4
|
+
* Classification rules:
|
|
5
|
+
* - `.sh`, `.ts`, `.js` files (non-declaration) -> `scripts`
|
|
6
|
+
* - Non-`.md` files (images, JSON, etc.) -> `assets`
|
|
7
|
+
* - `.md` files only -> `markdown_only`
|
|
8
|
+
*
|
|
9
|
+
* Also builds a full inventory of all files with their classified kind.
|
|
10
|
+
*/
|
|
11
|
+
import type { TrustLevel, SkillInventoryItem } from '../packs/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Classify a skill directory and return its trust level and inventory.
|
|
14
|
+
*
|
|
15
|
+
* @param dirPath - Absolute path to the skill directory
|
|
16
|
+
* @returns Trust level and full file inventory
|
|
17
|
+
*/
|
|
18
|
+
export declare function classifyTrust(dirPath: string): {
|
|
19
|
+
trust: TrustLevel;
|
|
20
|
+
inventory: SkillInventoryItem[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Namespace object for backward compatibility and namespaced access.
|
|
24
|
+
* Delegates to standalone `classifyTrust` function.
|
|
25
|
+
*/
|
|
26
|
+
export declare const TrustClassifier: {
|
|
27
|
+
classify(dirPath: string): Promise<{
|
|
28
|
+
trust: TrustLevel;
|
|
29
|
+
inventory: SkillInventoryItem[];
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=trust-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-classifier.d.ts","sourceRoot":"","sources":["../../src/skills/trust-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAWxE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;IAC9C,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,kBAAkB,EAAE,CAAC;CACjC,CAsBA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe;sBACR,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;CAG3F,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust Classifier — scans a skill directory and determines its trust level.
|
|
3
|
+
*
|
|
4
|
+
* Classification rules:
|
|
5
|
+
* - `.sh`, `.ts`, `.js` files (non-declaration) -> `scripts`
|
|
6
|
+
* - Non-`.md` files (images, JSON, etc.) -> `assets`
|
|
7
|
+
* - `.md` files only -> `markdown_only`
|
|
8
|
+
*
|
|
9
|
+
* Also builds a full inventory of all files with their classified kind.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
12
|
+
import { join, extname, relative } from 'node:path';
|
|
13
|
+
/** File extensions that indicate executable scripts */
|
|
14
|
+
const SCRIPT_EXTENSIONS = new Set(['.sh', '.ts', '.js', '.mjs', '.cjs', '.py', '.rb', '.bash']);
|
|
15
|
+
/** File extensions considered markdown/documentation */
|
|
16
|
+
const MARKDOWN_EXTENSIONS = new Set(['.md', '.mdx']);
|
|
17
|
+
/** File extensions for TypeScript declaration files (not executable) */
|
|
18
|
+
const DECLARATION_PATTERN = /\.d\.[mc]?ts$/;
|
|
19
|
+
/**
|
|
20
|
+
* Classify a skill directory and return its trust level and inventory.
|
|
21
|
+
*
|
|
22
|
+
* @param dirPath - Absolute path to the skill directory
|
|
23
|
+
* @returns Trust level and full file inventory
|
|
24
|
+
*/
|
|
25
|
+
export function classifyTrust(dirPath) {
|
|
26
|
+
if (!existsSync(dirPath)) {
|
|
27
|
+
return { trust: 'markdown_only', inventory: [] };
|
|
28
|
+
}
|
|
29
|
+
const inventory = [];
|
|
30
|
+
walkDir(dirPath, dirPath, inventory);
|
|
31
|
+
// Determine trust level from inventory
|
|
32
|
+
const hasScripts = inventory.some((item) => item.kind === 'script');
|
|
33
|
+
const hasAssets = inventory.some((item) => item.kind === 'asset');
|
|
34
|
+
let trust;
|
|
35
|
+
if (hasScripts) {
|
|
36
|
+
trust = 'scripts';
|
|
37
|
+
}
|
|
38
|
+
else if (hasAssets) {
|
|
39
|
+
trust = 'assets';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
trust = 'markdown_only';
|
|
43
|
+
}
|
|
44
|
+
return { trust, inventory };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Namespace object for backward compatibility and namespaced access.
|
|
48
|
+
* Delegates to standalone `classifyTrust` function.
|
|
49
|
+
*/
|
|
50
|
+
export const TrustClassifier = {
|
|
51
|
+
classify(dirPath) {
|
|
52
|
+
return Promise.resolve(classifyTrust(dirPath));
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
/** Recursively walk a directory and classify all files */
|
|
56
|
+
function walkDir(rootDir, currentDir, inventory) {
|
|
57
|
+
let names;
|
|
58
|
+
try {
|
|
59
|
+
names = readdirSync(currentDir);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
for (const name of names) {
|
|
65
|
+
const fullPath = join(currentDir, name);
|
|
66
|
+
let stat;
|
|
67
|
+
try {
|
|
68
|
+
stat = statSync(fullPath);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (stat.isDirectory()) {
|
|
74
|
+
// Skip hidden directories and node_modules
|
|
75
|
+
if (name.startsWith('.') || name === 'node_modules')
|
|
76
|
+
continue;
|
|
77
|
+
walkDir(rootDir, fullPath, inventory);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (!stat.isFile())
|
|
81
|
+
continue;
|
|
82
|
+
const relPath = relative(rootDir, fullPath);
|
|
83
|
+
const ext = extname(name).toLowerCase();
|
|
84
|
+
const kind = classifyFile(name, ext);
|
|
85
|
+
inventory.push({ path: relPath, kind });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Classify a single file by its extension and name */
|
|
89
|
+
function classifyFile(fileName, ext) {
|
|
90
|
+
// SKILL.md is the primary skill definition
|
|
91
|
+
if (fileName === 'SKILL.md' || fileName === 'skill.md') {
|
|
92
|
+
return 'skill';
|
|
93
|
+
}
|
|
94
|
+
// Declaration files are not executable
|
|
95
|
+
if (DECLARATION_PATTERN.test(fileName)) {
|
|
96
|
+
return 'reference';
|
|
97
|
+
}
|
|
98
|
+
// Script files
|
|
99
|
+
if (SCRIPT_EXTENSIONS.has(ext)) {
|
|
100
|
+
return 'script';
|
|
101
|
+
}
|
|
102
|
+
// Markdown files are references
|
|
103
|
+
if (MARKDOWN_EXTENSIONS.has(ext)) {
|
|
104
|
+
return 'reference';
|
|
105
|
+
}
|
|
106
|
+
// Everything else is an asset
|
|
107
|
+
return 'asset';
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=trust-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-classifier.js","sourceRoot":"","sources":["../../src/skills/trust-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { RuntimeAdapterRegistry } from '../adapters/registry.js';
|
|
9
9
|
import type { SubagentTask, SubagentResult, DispatchOptions, AggregatedResult } from './types.js';
|
|
10
|
+
import type { GoalRepository } from '../planning/goal-ancestry.js';
|
|
10
11
|
export interface SubagentDispatcherConfig {
|
|
11
12
|
/** RuntimeAdapterRegistry for looking up adapters by type */
|
|
12
13
|
adapterRegistry: RuntimeAdapterRegistry;
|
|
13
14
|
/** Base directory for git worktree isolation */
|
|
14
15
|
baseDir?: string;
|
|
16
|
+
/** Optional goal repository for injecting goal ancestry context */
|
|
17
|
+
goalRepository?: GoalRepository;
|
|
15
18
|
}
|
|
16
19
|
export declare class SubagentDispatcher {
|
|
17
20
|
private readonly checkout;
|
|
@@ -19,6 +22,7 @@ export declare class SubagentDispatcher {
|
|
|
19
22
|
private readonly concurrency;
|
|
20
23
|
private readonly reaper;
|
|
21
24
|
private readonly adapterRegistry;
|
|
25
|
+
private readonly goalAncestry?;
|
|
22
26
|
constructor(config: SubagentDispatcherConfig);
|
|
23
27
|
/**
|
|
24
28
|
* Dispatch one or more tasks to subagents.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/subagent/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/subagent/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnE,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,eAAe,EAAE,sBAAsB,CAAC;IACxC,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;gBAEjC,MAAM,EAAE,wBAAwB;IAa5C;;;;;;OAMG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2C/F,8DAA8D;IAC9D,OAAO,IAAI,IAAI;IAOf,uCAAuC;IACvC,WAAW,IAAI,cAAc,EAAE;YAcjB,gBAAgB;YAuFhB,WAAW;IAuFzB,uFAAuF;IACvF,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,qBAAqB;CAO9B"}
|
|
@@ -10,6 +10,7 @@ import { WorkspaceResolver } from './workspace-resolver.js';
|
|
|
10
10
|
import { ConcurrencyManager } from './concurrency-manager.js';
|
|
11
11
|
import { OrphanReaper } from './orphan-reaper.js';
|
|
12
12
|
import { aggregate } from './result-aggregator.js';
|
|
13
|
+
import { GoalAncestry } from '../planning/goal-ancestry.js';
|
|
13
14
|
const DEFAULT_TIMEOUT = 300_000; // 5 minutes
|
|
14
15
|
const DEFAULT_MAX_CONCURRENT = 3;
|
|
15
16
|
export class SubagentDispatcher {
|
|
@@ -18,8 +19,12 @@ export class SubagentDispatcher {
|
|
|
18
19
|
concurrency = new ConcurrencyManager();
|
|
19
20
|
reaper;
|
|
20
21
|
adapterRegistry;
|
|
22
|
+
goalAncestry;
|
|
21
23
|
constructor(config) {
|
|
22
24
|
this.adapterRegistry = config.adapterRegistry;
|
|
25
|
+
if (config.goalRepository) {
|
|
26
|
+
this.goalAncestry = new GoalAncestry(config.goalRepository);
|
|
27
|
+
}
|
|
23
28
|
this.workspace = new WorkspaceResolver(config.baseDir ?? process.cwd());
|
|
24
29
|
this.reaper = new OrphanReaper((taskId) => {
|
|
25
30
|
// On orphan: release the task claim and clean up workspace
|
|
@@ -181,13 +186,20 @@ export class SubagentDispatcher {
|
|
|
181
186
|
durationMs: Date.now() - startTime,
|
|
182
187
|
};
|
|
183
188
|
}
|
|
184
|
-
// 4.
|
|
189
|
+
// 4. Inject goal ancestry context if available
|
|
190
|
+
let enrichedConfig = { ...task.config, timeout };
|
|
191
|
+
const goalId = task.config?.goalId;
|
|
192
|
+
if (goalId && this.goalAncestry) {
|
|
193
|
+
enrichedConfig =
|
|
194
|
+
this.goalAncestry.inject({ config: enrichedConfig }, goalId).config ?? enrichedConfig;
|
|
195
|
+
}
|
|
196
|
+
// 5. Execute with timeout
|
|
185
197
|
try {
|
|
186
198
|
const resultPromise = adapter.execute({
|
|
187
199
|
runId: `subagent-${task.taskId}-${Date.now()}`,
|
|
188
200
|
prompt: task.prompt,
|
|
189
201
|
workspace,
|
|
190
|
-
config:
|
|
202
|
+
config: enrichedConfig,
|
|
191
203
|
});
|
|
192
204
|
const timeoutPromise = new Promise((_, reject) => {
|
|
193
205
|
setTimeout(() => reject(new Error('Task timed out')), timeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/subagent/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,YAAY;AAC7C,MAAM,sBAAsB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/subagent/dispatcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soleri/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.7.0",
|
|
4
4
|
"description": "Shared engine for Soleri agents — vault, brain, planner, LLM utilities, and facade infrastructure.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -55,9 +55,6 @@
|
|
|
55
55
|
"yaml": "^2.7.0",
|
|
56
56
|
"zod": "^3.24.2"
|
|
57
57
|
},
|
|
58
|
-
"optionalDependencies": {
|
|
59
|
-
"better-sqlite3": "^11.8.1"
|
|
60
|
-
},
|
|
61
58
|
"devDependencies": {
|
|
62
59
|
"@types/better-sqlite3": "^7.6.13",
|
|
63
60
|
"@types/pdf-parse": "^1.1.5",
|