@soleri/core 9.3.1 → 9.5.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.
Files changed (205) hide show
  1. package/dist/brain/intelligence.d.ts +5 -0
  2. package/dist/brain/intelligence.d.ts.map +1 -1
  3. package/dist/brain/intelligence.js +115 -26
  4. package/dist/brain/intelligence.js.map +1 -1
  5. package/dist/brain/learning-radar.d.ts +3 -3
  6. package/dist/brain/learning-radar.d.ts.map +1 -1
  7. package/dist/brain/learning-radar.js +8 -4
  8. package/dist/brain/learning-radar.js.map +1 -1
  9. package/dist/control/intent-router.d.ts +2 -2
  10. package/dist/control/intent-router.d.ts.map +1 -1
  11. package/dist/control/intent-router.js +35 -1
  12. package/dist/control/intent-router.js.map +1 -1
  13. package/dist/control/types.d.ts +10 -2
  14. package/dist/control/types.d.ts.map +1 -1
  15. package/dist/curator/curator.d.ts +4 -0
  16. package/dist/curator/curator.d.ts.map +1 -1
  17. package/dist/curator/curator.js +23 -1
  18. package/dist/curator/curator.js.map +1 -1
  19. package/dist/curator/schema.d.ts +1 -1
  20. package/dist/curator/schema.d.ts.map +1 -1
  21. package/dist/curator/schema.js +8 -0
  22. package/dist/curator/schema.js.map +1 -1
  23. package/dist/domain-packs/types.d.ts +6 -0
  24. package/dist/domain-packs/types.d.ts.map +1 -1
  25. package/dist/domain-packs/types.js +1 -0
  26. package/dist/domain-packs/types.js.map +1 -1
  27. package/dist/engine/module-manifest.js +3 -3
  28. package/dist/engine/module-manifest.js.map +1 -1
  29. package/dist/engine/register-engine.d.ts +9 -0
  30. package/dist/engine/register-engine.d.ts.map +1 -1
  31. package/dist/engine/register-engine.js +59 -1
  32. package/dist/engine/register-engine.js.map +1 -1
  33. package/dist/facades/types.d.ts +5 -1
  34. package/dist/facades/types.d.ts.map +1 -1
  35. package/dist/facades/types.js.map +1 -1
  36. package/dist/hooks/candidate-scorer.d.ts +28 -0
  37. package/dist/hooks/candidate-scorer.d.ts.map +1 -0
  38. package/dist/hooks/candidate-scorer.js +20 -0
  39. package/dist/hooks/candidate-scorer.js.map +1 -0
  40. package/dist/hooks/index.d.ts +2 -0
  41. package/dist/hooks/index.d.ts.map +1 -0
  42. package/dist/hooks/index.js +2 -0
  43. package/dist/hooks/index.js.map +1 -0
  44. package/dist/index.d.ts +4 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/operator/operator-context-store.d.ts +54 -0
  49. package/dist/operator/operator-context-store.d.ts.map +1 -0
  50. package/dist/operator/operator-context-store.js +434 -0
  51. package/dist/operator/operator-context-store.js.map +1 -0
  52. package/dist/operator/operator-context-types.d.ts +101 -0
  53. package/dist/operator/operator-context-types.d.ts.map +1 -0
  54. package/dist/operator/operator-context-types.js +27 -0
  55. package/dist/operator/operator-context-types.js.map +1 -0
  56. package/dist/packs/index.d.ts +2 -2
  57. package/dist/packs/index.d.ts.map +1 -1
  58. package/dist/packs/index.js +1 -1
  59. package/dist/packs/index.js.map +1 -1
  60. package/dist/packs/lockfile.d.ts +3 -0
  61. package/dist/packs/lockfile.d.ts.map +1 -1
  62. package/dist/packs/lockfile.js.map +1 -1
  63. package/dist/packs/types.d.ts +8 -2
  64. package/dist/packs/types.d.ts.map +1 -1
  65. package/dist/packs/types.js +6 -0
  66. package/dist/packs/types.js.map +1 -1
  67. package/dist/planning/plan-lifecycle.d.ts +12 -1
  68. package/dist/planning/plan-lifecycle.d.ts.map +1 -1
  69. package/dist/planning/plan-lifecycle.js +54 -16
  70. package/dist/planning/plan-lifecycle.js.map +1 -1
  71. package/dist/planning/planner-types.d.ts +6 -0
  72. package/dist/planning/planner-types.d.ts.map +1 -1
  73. package/dist/planning/planner.d.ts +21 -1
  74. package/dist/planning/planner.d.ts.map +1 -1
  75. package/dist/planning/planner.js +62 -3
  76. package/dist/planning/planner.js.map +1 -1
  77. package/dist/planning/task-complexity-assessor.d.ts.map +1 -1
  78. package/dist/planning/task-complexity-assessor.js.map +1 -1
  79. package/dist/plugins/types.d.ts +18 -18
  80. package/dist/runtime/admin-ops.d.ts +1 -1
  81. package/dist/runtime/admin-ops.d.ts.map +1 -1
  82. package/dist/runtime/admin-ops.js +100 -3
  83. package/dist/runtime/admin-ops.js.map +1 -1
  84. package/dist/runtime/admin-setup-ops.d.ts.map +1 -1
  85. package/dist/runtime/admin-setup-ops.js +19 -9
  86. package/dist/runtime/admin-setup-ops.js.map +1 -1
  87. package/dist/runtime/capture-ops.d.ts.map +1 -1
  88. package/dist/runtime/capture-ops.js +35 -7
  89. package/dist/runtime/capture-ops.js.map +1 -1
  90. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  91. package/dist/runtime/facades/brain-facade.js +4 -2
  92. package/dist/runtime/facades/brain-facade.js.map +1 -1
  93. package/dist/runtime/facades/control-facade.d.ts.map +1 -1
  94. package/dist/runtime/facades/control-facade.js +8 -2
  95. package/dist/runtime/facades/control-facade.js.map +1 -1
  96. package/dist/runtime/facades/curator-facade.d.ts.map +1 -1
  97. package/dist/runtime/facades/curator-facade.js +13 -0
  98. package/dist/runtime/facades/curator-facade.js.map +1 -1
  99. package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
  100. package/dist/runtime/facades/memory-facade.js +10 -12
  101. package/dist/runtime/facades/memory-facade.js.map +1 -1
  102. package/dist/runtime/facades/orchestrate-facade.d.ts.map +1 -1
  103. package/dist/runtime/facades/orchestrate-facade.js +36 -1
  104. package/dist/runtime/facades/orchestrate-facade.js.map +1 -1
  105. package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
  106. package/dist/runtime/facades/plan-facade.js +20 -4
  107. package/dist/runtime/facades/plan-facade.js.map +1 -1
  108. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  109. package/dist/runtime/orchestrate-ops.js +71 -4
  110. package/dist/runtime/orchestrate-ops.js.map +1 -1
  111. package/dist/runtime/plan-feedback-helper.d.ts +21 -0
  112. package/dist/runtime/plan-feedback-helper.d.ts.map +1 -0
  113. package/dist/runtime/plan-feedback-helper.js +52 -0
  114. package/dist/runtime/plan-feedback-helper.js.map +1 -0
  115. package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
  116. package/dist/runtime/planning-extra-ops.js +73 -34
  117. package/dist/runtime/planning-extra-ops.js.map +1 -1
  118. package/dist/runtime/session-briefing.d.ts.map +1 -1
  119. package/dist/runtime/session-briefing.js +9 -1
  120. package/dist/runtime/session-briefing.js.map +1 -1
  121. package/dist/runtime/types.d.ts +3 -0
  122. package/dist/runtime/types.d.ts.map +1 -1
  123. package/dist/skills/sync-skills.d.ts.map +1 -1
  124. package/dist/skills/sync-skills.js +13 -7
  125. package/dist/skills/sync-skills.js.map +1 -1
  126. package/package.json +1 -1
  127. package/src/brain/brain-intelligence.test.ts +30 -0
  128. package/src/brain/brain.ts +120 -46
  129. package/src/brain/extraction-quality.test.ts +323 -0
  130. package/src/brain/intelligence.ts +175 -64
  131. package/src/brain/learning-radar.ts +8 -5
  132. package/src/brain/second-brain-features.test.ts +1 -1
  133. package/src/chat/agent-loop.ts +1 -1
  134. package/src/chat/notifications.ts +4 -0
  135. package/src/control/intent-router.test.ts +73 -3
  136. package/src/control/intent-router.ts +48 -9
  137. package/src/control/types.ts +13 -2
  138. package/src/curator/curator.test.ts +92 -0
  139. package/src/curator/curator.ts +162 -18
  140. package/src/curator/schema.ts +8 -0
  141. package/src/domain-packs/types.ts +8 -0
  142. package/src/engine/module-manifest.test.ts +8 -2
  143. package/src/engine/module-manifest.ts +3 -3
  144. package/src/engine/register-engine.test.ts +73 -1
  145. package/src/engine/register-engine.ts +61 -1
  146. package/src/facades/types.ts +5 -0
  147. package/src/hooks/candidate-scorer.test.ts +76 -0
  148. package/src/hooks/candidate-scorer.ts +39 -0
  149. package/src/hooks/index.ts +6 -0
  150. package/src/index.ts +24 -0
  151. package/src/llm/llm-client.ts +1 -0
  152. package/src/operator/operator-context-store.test.ts +698 -0
  153. package/src/operator/operator-context-store.ts +569 -0
  154. package/src/operator/operator-context-types.ts +139 -0
  155. package/src/packs/index.ts +3 -1
  156. package/src/packs/lockfile.ts +3 -0
  157. package/src/packs/types.ts +9 -0
  158. package/src/persistence/sqlite-provider.ts +1 -0
  159. package/src/planning/github-projection.ts +48 -44
  160. package/src/planning/plan-lifecycle.ts +93 -22
  161. package/src/planning/planner-types.ts +6 -0
  162. package/src/planning/planner.ts +74 -4
  163. package/src/planning/task-complexity-assessor.test.ts +6 -2
  164. package/src/planning/task-complexity-assessor.ts +1 -4
  165. package/src/queue/pipeline-runner.ts +4 -0
  166. package/src/runtime/admin-ops.test.ts +139 -6
  167. package/src/runtime/admin-ops.ts +104 -3
  168. package/src/runtime/admin-setup-ops.ts +30 -10
  169. package/src/runtime/capture-ops.test.ts +84 -0
  170. package/src/runtime/capture-ops.ts +35 -7
  171. package/src/runtime/curator-extra-ops.test.ts +7 -0
  172. package/src/runtime/curator-extra-ops.ts +10 -1
  173. package/src/runtime/facades/admin-facade.test.ts +1 -1
  174. package/src/runtime/facades/brain-facade.ts +6 -3
  175. package/src/runtime/facades/control-facade.ts +10 -2
  176. package/src/runtime/facades/curator-facade.test.ts +7 -0
  177. package/src/runtime/facades/curator-facade.ts +18 -0
  178. package/src/runtime/facades/memory-facade.test.ts +14 -12
  179. package/src/runtime/facades/memory-facade.ts +197 -12
  180. package/src/runtime/facades/orchestrate-facade.ts +33 -1
  181. package/src/runtime/facades/plan-facade.test.ts +213 -0
  182. package/src/runtime/facades/plan-facade.ts +23 -4
  183. package/src/runtime/orchestrate-ops.test.ts +202 -2
  184. package/src/runtime/orchestrate-ops.ts +88 -7
  185. package/src/runtime/plan-feedback-helper.test.ts +173 -0
  186. package/src/runtime/plan-feedback-helper.ts +63 -0
  187. package/src/runtime/planning-extra-ops.test.ts +43 -1
  188. package/src/runtime/planning-extra-ops.ts +96 -33
  189. package/src/runtime/runtime.test.ts +50 -2
  190. package/src/runtime/runtime.ts +117 -89
  191. package/src/runtime/session-briefing.test.ts +1 -0
  192. package/src/runtime/session-briefing.ts +10 -1
  193. package/src/runtime/shutdown-registry.test.ts +151 -0
  194. package/src/runtime/shutdown-registry.ts +85 -0
  195. package/src/runtime/types.ts +7 -1
  196. package/src/skills/sync-skills.ts +14 -7
  197. package/src/transport/http-server.ts +50 -3
  198. package/src/transport/ws-server.ts +8 -0
  199. package/src/vault/linking.test.ts +12 -0
  200. package/src/vault/linking.ts +90 -44
  201. package/src/vault/vault-maintenance.ts +11 -18
  202. package/src/vault/vault-memories.ts +21 -13
  203. package/src/vault/vault-schema.ts +21 -0
  204. package/src/vault/vault.ts +8 -3
  205. package/vitest.config.ts +1 -0
@@ -0,0 +1,76 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { scoreCandidateForConversion } from './candidate-scorer.js';
3
+ import type { CandidateDimensions } from './candidate-scorer.js';
4
+
5
+ describe('scoreCandidateForConversion', () => {
6
+ it('should identify strong candidate (4/4 HIGH)', () => {
7
+ const dimensions: CandidateDimensions = {
8
+ frequency: 'HIGH',
9
+ eventCorrelation: 'HIGH',
10
+ determinism: 'HIGH',
11
+ autonomy: 'HIGH',
12
+ };
13
+ const result = scoreCandidateForConversion(dimensions);
14
+ expect(result.highCount).toBe(4);
15
+ expect(result.candidate).toBe(true);
16
+ });
17
+
18
+ it('should identify borderline candidate (3/4 HIGH)', () => {
19
+ const dimensions: CandidateDimensions = {
20
+ frequency: 'HIGH',
21
+ eventCorrelation: 'HIGH',
22
+ determinism: 'HIGH',
23
+ autonomy: 'LOW',
24
+ };
25
+ const result = scoreCandidateForConversion(dimensions);
26
+ expect(result.highCount).toBe(3);
27
+ expect(result.candidate).toBe(true);
28
+ });
29
+
30
+ it('should reject non-candidate (2/4 HIGH)', () => {
31
+ const dimensions: CandidateDimensions = {
32
+ frequency: 'HIGH',
33
+ eventCorrelation: 'LOW',
34
+ determinism: 'HIGH',
35
+ autonomy: 'LOW',
36
+ };
37
+ const result = scoreCandidateForConversion(dimensions);
38
+ expect(result.highCount).toBe(2);
39
+ expect(result.candidate).toBe(false);
40
+ });
41
+
42
+ it('should reject weak candidate (1/4 HIGH)', () => {
43
+ const dimensions: CandidateDimensions = {
44
+ frequency: 'LOW',
45
+ eventCorrelation: 'LOW',
46
+ determinism: 'LOW',
47
+ autonomy: 'HIGH',
48
+ };
49
+ const result = scoreCandidateForConversion(dimensions);
50
+ expect(result.highCount).toBe(1);
51
+ expect(result.candidate).toBe(false);
52
+ });
53
+
54
+ it('should reject zero score (0/4 HIGH)', () => {
55
+ const dimensions: CandidateDimensions = {
56
+ frequency: 'LOW',
57
+ eventCorrelation: 'LOW',
58
+ determinism: 'LOW',
59
+ autonomy: 'LOW',
60
+ };
61
+ const result = scoreCandidateForConversion(dimensions);
62
+ expect(result.highCount).toBe(0);
63
+ expect(result.candidate).toBe(false);
64
+ });
65
+
66
+ it('should preserve dimension values in result', () => {
67
+ const dimensions: CandidateDimensions = {
68
+ frequency: 'HIGH',
69
+ eventCorrelation: 'LOW',
70
+ determinism: 'HIGH',
71
+ autonomy: 'HIGH',
72
+ };
73
+ const result = scoreCandidateForConversion(dimensions);
74
+ expect(result.dimensions).toEqual(dimensions);
75
+ });
76
+ });
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Candidate scoring rubric for skill-to-hook conversion.
3
+ * 4-dimension scoring: frequency, eventCorrelation, determinism, autonomy.
4
+ * Threshold: >= 3 HIGH dimensions = candidate for conversion.
5
+ */
6
+
7
+ export type DimensionLevel = 'HIGH' | 'LOW';
8
+
9
+ export interface CandidateDimensions {
10
+ /** 3+ manual calls per session for same event type → HIGH */
11
+ frequency: DimensionLevel;
12
+ /** Skill consistently triggers on a recognizable hook event → HIGH */
13
+ eventCorrelation: DimensionLevel;
14
+ /** Skill produces consistent, non-exploratory guidance → HIGH */
15
+ determinism: DimensionLevel;
16
+ /** Skill requires no interactive user decisions mid-execution → HIGH */
17
+ autonomy: DimensionLevel;
18
+ }
19
+
20
+ export interface CandidateScore {
21
+ dimensions: CandidateDimensions;
22
+ highCount: number;
23
+ candidate: boolean;
24
+ }
25
+
26
+ /**
27
+ * Score a skill for hook conversion candidacy.
28
+ * @param dimensions - The 4 scored dimensions (each HIGH or LOW)
29
+ * @returns Score with candidate boolean (true if >= 3 HIGH)
30
+ */
31
+ export function scoreCandidateForConversion(dimensions: CandidateDimensions): CandidateScore {
32
+ const values = Object.values(dimensions);
33
+ const highCount = values.filter((v) => v === 'HIGH').length;
34
+ return {
35
+ dimensions,
36
+ highCount,
37
+ candidate: highCount >= 3,
38
+ };
39
+ }
@@ -0,0 +1,6 @@
1
+ export {
2
+ scoreCandidateForConversion,
3
+ type CandidateDimensions,
4
+ type CandidateScore,
5
+ type DimensionLevel,
6
+ } from './candidate-scorer.js';
package/src/index.ts CHANGED
@@ -551,6 +551,8 @@ export { createSemanticFacades } from './runtime/facades/index.js';
551
551
  export { createDomainFacade, createDomainFacades } from './runtime/domain-ops.js';
552
552
  export { FeatureFlags } from './runtime/feature-flags.js';
553
553
  export type { FlagDefinition } from './runtime/feature-flags.js';
554
+ export { ShutdownRegistry } from './runtime/shutdown-registry.js';
555
+ export type { ShutdownCallback } from './runtime/shutdown-registry.js';
554
556
  export type { AgentRuntimeConfig, AgentRuntime } from './runtime/types.js';
555
557
  export {
556
558
  deprecationWarning,
@@ -627,6 +629,7 @@ export type {
627
629
  LockEntry,
628
630
  PackType,
629
631
  PackSource,
632
+ PackTier,
630
633
  LockfileData,
631
634
  ResolvedPack,
632
635
  ResolveOptions,
@@ -799,3 +802,24 @@ export type {
799
802
  ProfileSnapshot,
800
803
  OperatorProfileHistory,
801
804
  } from './operator/operator-types.js';
805
+
806
+ // ─── Operator Context (Adaptive Persona) ────────────────────────────
807
+ export { OperatorContextStore } from './operator/operator-context-store.js';
808
+ export { DECLINED_CATEGORIES } from './operator/operator-context-types.js';
809
+ export type {
810
+ OperatorSignals,
811
+ ExpertiseSignal,
812
+ CorrectionSignal,
813
+ InterestSignal,
814
+ WorkPatternSignal,
815
+ OperatorContext,
816
+ ExpertiseItem,
817
+ CorrectionItem,
818
+ InterestItem,
819
+ WorkPatternItem,
820
+ ExpertiseLevel,
821
+ SignalScope,
822
+ PatternFrequency,
823
+ ContextItemType,
824
+ DeclinedCategory,
825
+ } from './operator/operator-context-types.js';
@@ -237,6 +237,7 @@ export class LLMClient {
237
237
  temperature: options.temperature ?? 0.3,
238
238
  max_completion_tokens: options.maxTokens ?? 500,
239
239
  }),
240
+ signal: AbortSignal.timeout(60_000),
240
241
  });
241
242
 
242
243
  if (response.headers) {