@soleri/core 9.6.0 → 9.7.1

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.
Files changed (90) hide show
  1. package/dist/index.d.ts +10 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/packs/index.d.ts +1 -1
  6. package/dist/packs/index.d.ts.map +1 -1
  7. package/dist/packs/index.js.map +1 -1
  8. package/dist/packs/types.d.ts +69 -42
  9. package/dist/packs/types.d.ts.map +1 -1
  10. package/dist/packs/types.js.map +1 -1
  11. package/dist/planning/github-projection.d.ts +3 -1
  12. package/dist/planning/github-projection.d.ts.map +1 -1
  13. package/dist/planning/github-projection.js +5 -1
  14. package/dist/planning/github-projection.js.map +1 -1
  15. package/dist/planning/goal-ancestry.d.ts +72 -0
  16. package/dist/planning/goal-ancestry.d.ts.map +1 -0
  17. package/dist/planning/goal-ancestry.js +137 -0
  18. package/dist/planning/goal-ancestry.js.map +1 -0
  19. package/dist/planning/plan-lifecycle.d.ts +2 -0
  20. package/dist/planning/plan-lifecycle.d.ts.map +1 -1
  21. package/dist/planning/plan-lifecycle.js +1 -0
  22. package/dist/planning/plan-lifecycle.js.map +1 -1
  23. package/dist/planning/planner-types.d.ts +2 -0
  24. package/dist/planning/planner-types.d.ts.map +1 -1
  25. package/dist/runtime/context-health.d.ts +14 -1
  26. package/dist/runtime/context-health.d.ts.map +1 -1
  27. package/dist/runtime/context-health.js +30 -2
  28. package/dist/runtime/context-health.js.map +1 -1
  29. package/dist/runtime/facades/orchestrate-facade.d.ts.map +1 -1
  30. package/dist/runtime/facades/orchestrate-facade.js +11 -0
  31. package/dist/runtime/facades/orchestrate-facade.js.map +1 -1
  32. package/dist/session/compaction-evaluator.d.ts +20 -0
  33. package/dist/session/compaction-evaluator.d.ts.map +1 -0
  34. package/dist/session/compaction-evaluator.js +73 -0
  35. package/dist/session/compaction-evaluator.js.map +1 -0
  36. package/dist/session/compaction-policy.d.ts +50 -0
  37. package/dist/session/compaction-policy.d.ts.map +1 -0
  38. package/dist/session/compaction-policy.js +17 -0
  39. package/dist/session/compaction-policy.js.map +1 -0
  40. package/dist/session/handoff-renderer.d.ts +22 -0
  41. package/dist/session/handoff-renderer.d.ts.map +1 -0
  42. package/dist/session/handoff-renderer.js +49 -0
  43. package/dist/session/handoff-renderer.js.map +1 -0
  44. package/dist/session/index.d.ts +6 -0
  45. package/dist/session/index.d.ts.map +1 -0
  46. package/dist/session/index.js +5 -0
  47. package/dist/session/index.js.map +1 -0
  48. package/dist/session/policy-resolver.d.ts +20 -0
  49. package/dist/session/policy-resolver.d.ts.map +1 -0
  50. package/dist/session/policy-resolver.js +28 -0
  51. package/dist/session/policy-resolver.js.map +1 -0
  52. package/dist/skills/sync-skills.d.ts +27 -0
  53. package/dist/skills/sync-skills.d.ts.map +1 -1
  54. package/dist/skills/sync-skills.js +92 -1
  55. package/dist/skills/sync-skills.js.map +1 -1
  56. package/dist/skills/trust-classifier.d.ts +32 -0
  57. package/dist/skills/trust-classifier.d.ts.map +1 -0
  58. package/dist/skills/trust-classifier.js +109 -0
  59. package/dist/skills/trust-classifier.js.map +1 -0
  60. package/dist/subagent/dispatcher.d.ts +4 -0
  61. package/dist/subagent/dispatcher.d.ts.map +1 -1
  62. package/dist/subagent/dispatcher.js +14 -2
  63. package/dist/subagent/dispatcher.js.map +1 -1
  64. package/dist/update-check.d.ts +19 -0
  65. package/dist/update-check.d.ts.map +1 -1
  66. package/dist/update-check.js +51 -4
  67. package/dist/update-check.js.map +1 -1
  68. package/package.json +1 -4
  69. package/src/index.ts +44 -0
  70. package/src/packs/index.ts +4 -0
  71. package/src/packs/types.ts +32 -0
  72. package/src/planning/github-projection.ts +6 -0
  73. package/src/planning/goal-ancestry.test.ts +427 -0
  74. package/src/planning/goal-ancestry.ts +187 -0
  75. package/src/planning/plan-lifecycle.ts +3 -0
  76. package/src/planning/planner-types.ts +2 -0
  77. package/src/runtime/context-health.ts +42 -2
  78. package/src/runtime/facades/orchestrate-facade.ts +14 -0
  79. package/src/session/compaction-evaluator.ts +87 -0
  80. package/src/session/compaction-policy.ts +66 -0
  81. package/src/session/compaction.test.ts +259 -0
  82. package/src/session/handoff-renderer.ts +56 -0
  83. package/src/session/index.ts +12 -0
  84. package/src/session/policy-resolver.ts +34 -0
  85. package/src/skills/sync-skills.ts +114 -1
  86. package/src/skills/trust-classifier.test.ts +252 -0
  87. package/src/skills/trust-classifier.ts +127 -0
  88. package/src/subagent/dispatcher.ts +18 -2
  89. package/src/update-check.test.ts +91 -0
  90. package/src/update-check.ts +76 -6
@@ -0,0 +1,22 @@
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
+ import type { HandoffNote } from './compaction-policy.js';
8
+ /**
9
+ * Render a HandoffNote as markdown.
10
+ *
11
+ * Sections:
12
+ * - Session Handoff (header)
13
+ * - Rotated At
14
+ * - Reason
15
+ * - In Progress
16
+ * - Key Decisions
17
+ * - Files Modified
18
+ *
19
+ * Empty sections are omitted entirely.
20
+ */
21
+ export declare function renderHandoff(note: HandoffNote): string;
22
+ //# sourceMappingURL=handoff-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-renderer.d.ts","sourceRoot":"","sources":["../../src/session/handoff-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAiCvD"}
@@ -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;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;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,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"}
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":"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"}
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;AAUpB,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,eAAe,EAAE,sBAAsB,CAAC;IACxC,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;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;gBAE7C,MAAM,EAAE,wBAAwB;IAU5C;;;;;;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;IA+EzB,uFAAuF;IACvF,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,qBAAqB;CAO9B"}
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. Execute with timeout
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: { ...task.config, timeout },
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":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/subagent/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,25 @@
6
6
  * - Opt-out: set SOLERI_NO_UPDATE_CHECK=1
7
7
  * - Zero dependencies: uses Node.js built-in fetch()
8
8
  */
9
+ export interface UpdateInfo {
10
+ hasUpdate: boolean;
11
+ currentVersion: string;
12
+ latestVersion: string | null;
13
+ changelogUrl: string | null;
14
+ hasBreakingChanges: boolean;
15
+ hasMultipleReleases: boolean;
16
+ }
17
+ /**
18
+ * Build a changelog URL for a given version.
19
+ */
20
+ export declare function buildChangelogUrl(version: string): string;
21
+ /**
22
+ * Detect breaking changes (major version bump) and multi-release jumps (minor +2).
23
+ */
24
+ export declare function detectBreakingChanges(currentVersion: string, latestVersion: string): {
25
+ hasBreakingChanges: boolean;
26
+ hasMultipleReleases: boolean;
27
+ };
9
28
  /**
10
29
  * Check for updates and emit stderr notifications.
11
30
  * Call fire-and-forget (no await needed). Never throws.