@metabob/minibob 0.1.2

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 (174) hide show
  1. package/ARCHITECTURE.md +255 -0
  2. package/CHANGELOG.md +112 -0
  3. package/README.md +380 -0
  4. package/bin/minibob.js +36 -0
  5. package/dist/acp-gossip.d.ts +72 -0
  6. package/dist/acp-gossip.d.ts.map +1 -0
  7. package/dist/acp-gossip.js +156 -0
  8. package/dist/acp-gossip.js.map +1 -0
  9. package/dist/acp.d.ts +62 -0
  10. package/dist/acp.d.ts.map +1 -0
  11. package/dist/acp.js +292 -0
  12. package/dist/acp.js.map +1 -0
  13. package/dist/activity.d.ts +157 -0
  14. package/dist/activity.d.ts.map +1 -0
  15. package/dist/activity.js +518 -0
  16. package/dist/activity.js.map +1 -0
  17. package/dist/agent-runtime.d.ts +104 -0
  18. package/dist/agent-runtime.d.ts.map +1 -0
  19. package/dist/boredom.d.ts +125 -0
  20. package/dist/boredom.d.ts.map +1 -0
  21. package/dist/boredom.js +244 -0
  22. package/dist/boredom.js.map +1 -0
  23. package/dist/cli/acp-server.d.ts +23 -0
  24. package/dist/cli/acp-server.d.ts.map +1 -0
  25. package/dist/cli/burrow.d.ts +26 -0
  26. package/dist/cli/burrow.d.ts.map +1 -0
  27. package/dist/cli/doctor.d.ts +22 -0
  28. package/dist/cli/doctor.d.ts.map +1 -0
  29. package/dist/cli/goal.d.ts +22 -0
  30. package/dist/cli/goal.d.ts.map +1 -0
  31. package/dist/cli/index.d.ts +47 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/instance-registry.d.ts +78 -0
  34. package/dist/cli/instance-registry.d.ts.map +1 -0
  35. package/dist/cli/observe.d.ts +35 -0
  36. package/dist/cli/observe.d.ts.map +1 -0
  37. package/dist/cli/vessel.d.ts +14 -0
  38. package/dist/cli/vessel.d.ts.map +1 -0
  39. package/dist/composition-observer.d.ts +96 -0
  40. package/dist/composition-observer.d.ts.map +1 -0
  41. package/dist/config.d.ts +36 -0
  42. package/dist/config.d.ts.map +1 -0
  43. package/dist/config.js +128 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/docker/Dockerfile +35 -0
  46. package/dist/environment.d.ts +72 -0
  47. package/dist/environment.d.ts.map +1 -0
  48. package/dist/environment.js +142 -0
  49. package/dist/environment.js.map +1 -0
  50. package/dist/goal-processor.d.ts +165 -0
  51. package/dist/goal-processor.d.ts.map +1 -0
  52. package/dist/helm/minibob-cluster/Chart.yaml +13 -0
  53. package/dist/helm/minibob-cluster/templates/_helpers.tpl +60 -0
  54. package/dist/helm/minibob-cluster/templates/configmap.yaml +11 -0
  55. package/dist/helm/minibob-cluster/templates/deployment.yaml +108 -0
  56. package/dist/helm/minibob-cluster/templates/secret.yaml +10 -0
  57. package/dist/helm/minibob-cluster/templates/service.yaml +37 -0
  58. package/dist/helm/minibob-cluster/values-local.yaml +41 -0
  59. package/dist/helm/minibob-cluster/values-production.yaml +57 -0
  60. package/dist/helm/minibob-cluster/values-testing-cluster.yaml +43 -0
  61. package/dist/helm/minibob-cluster/values.yaml +127 -0
  62. package/dist/improviser.d.ts +74 -0
  63. package/dist/improviser.d.ts.map +1 -0
  64. package/dist/impulse-filter.d.ts +74 -0
  65. package/dist/impulse-filter.d.ts.map +1 -0
  66. package/dist/impulse.d.ts +92 -0
  67. package/dist/impulse.d.ts.map +1 -0
  68. package/dist/impulse.js +234 -0
  69. package/dist/impulse.js.map +1 -0
  70. package/dist/lib.d.ts +29 -0
  71. package/dist/lib.d.ts.map +1 -0
  72. package/dist/lib.js +18561 -0
  73. package/dist/lib.js.map +98 -0
  74. package/dist/lifecycle-hooks.d.ts +99 -0
  75. package/dist/lifecycle-hooks.d.ts.map +1 -0
  76. package/dist/lifecycle-hooks.js +135 -0
  77. package/dist/lifecycle-hooks.js.map +1 -0
  78. package/dist/llm.d.ts +31 -0
  79. package/dist/llm.d.ts.map +1 -0
  80. package/dist/llm.js +349 -0
  81. package/dist/llm.js.map +1 -0
  82. package/dist/mcp-activity-bridge.d.ts +66 -0
  83. package/dist/mcp-activity-bridge.d.ts.map +1 -0
  84. package/dist/mcp-activity-bridge.js +126 -0
  85. package/dist/mcp-activity-bridge.js.map +1 -0
  86. package/dist/mcp.d.ts +216 -0
  87. package/dist/mcp.d.ts.map +1 -0
  88. package/dist/mcp.js +292 -0
  89. package/dist/mcp.js.map +1 -0
  90. package/dist/memory-agent.d.ts +92 -0
  91. package/dist/memory-agent.d.ts.map +1 -0
  92. package/dist/memory-agent.js +277 -0
  93. package/dist/memory-agent.js.map +1 -0
  94. package/dist/runtime-mapping.d.ts +97 -0
  95. package/dist/runtime-mapping.d.ts.map +1 -0
  96. package/dist/search-first-executor.d.ts +113 -0
  97. package/dist/search-first-executor.d.ts.map +1 -0
  98. package/dist/session.d.ts +48 -0
  99. package/dist/session.d.ts.map +1 -0
  100. package/dist/template-extractor.d.ts +9 -0
  101. package/dist/template-extractor.d.ts.map +1 -0
  102. package/dist/template-generator.d.ts +12 -0
  103. package/dist/template-generator.d.ts.map +1 -0
  104. package/dist/tools.d.ts +58 -0
  105. package/dist/tools.d.ts.map +1 -0
  106. package/dist/tools.js +771 -0
  107. package/dist/tools.js.map +1 -0
  108. package/dist/types.d.ts +503 -0
  109. package/dist/types.d.ts.map +1 -0
  110. package/dist/types.js +8 -0
  111. package/dist/types.js.map +1 -0
  112. package/dist/understanding/analyzer.d.ts +55 -0
  113. package/dist/understanding/analyzer.d.ts.map +1 -0
  114. package/dist/understanding/explorer.d.ts +73 -0
  115. package/dist/understanding/explorer.d.ts.map +1 -0
  116. package/dist/understanding/index.d.ts +7 -0
  117. package/dist/understanding/index.d.ts.map +1 -0
  118. package/dist/understanding/types.d.ts +136 -0
  119. package/dist/understanding/types.d.ts.map +1 -0
  120. package/dist/validation.d.ts +29 -0
  121. package/dist/validation.d.ts.map +1 -0
  122. package/dist/validation.js +106 -0
  123. package/dist/validation.js.map +1 -0
  124. package/dist/vessel-bootstrap.d.ts +190 -0
  125. package/dist/vessel-bootstrap.d.ts.map +1 -0
  126. package/dist/vessel-registry.d.ts +229 -0
  127. package/dist/vessel-registry.d.ts.map +1 -0
  128. package/index.ts +1329 -0
  129. package/package.json +54 -0
  130. package/src/acp-gossip.ts +193 -0
  131. package/src/acp.ts +362 -0
  132. package/src/activity.ts +1464 -0
  133. package/src/agent-runtime.ts +365 -0
  134. package/src/boredom.ts +423 -0
  135. package/src/cli/acp-server.ts +377 -0
  136. package/src/cli/burrow.ts +896 -0
  137. package/src/cli/doctor.ts +526 -0
  138. package/src/cli/goal.ts +224 -0
  139. package/src/cli/index.ts +147 -0
  140. package/src/cli/instance-registry.ts +271 -0
  141. package/src/cli/observe.ts +682 -0
  142. package/src/cli/vessel.ts +287 -0
  143. package/src/components/SystemOverview.tsx +331 -0
  144. package/src/composition-observer.ts +449 -0
  145. package/src/config.ts +172 -0
  146. package/src/environment.ts +167 -0
  147. package/src/goal-processor.ts +654 -0
  148. package/src/improviser.ts +591 -0
  149. package/src/impulse-filter.ts +273 -0
  150. package/src/impulse.ts +311 -0
  151. package/src/lib.ts +147 -0
  152. package/src/lifecycle-hooks.ts +181 -0
  153. package/src/llm.ts +434 -0
  154. package/src/mcp-activity-bridge.ts +158 -0
  155. package/src/mcp.ts +747 -0
  156. package/src/memory-agent.ts +316 -0
  157. package/src/runtime-mapping.ts +527 -0
  158. package/src/search-first-executor.ts +666 -0
  159. package/src/session.ts +141 -0
  160. package/src/template-extractor.ts +256 -0
  161. package/src/template-generator.ts +130 -0
  162. package/src/tools.ts +924 -0
  163. package/src/types.ts +497 -0
  164. package/src/understanding/analyzer.ts +354 -0
  165. package/src/understanding/explorer.ts +488 -0
  166. package/src/understanding/index.ts +27 -0
  167. package/src/understanding/types.ts +153 -0
  168. package/src/validation.ts +125 -0
  169. package/src/vessel-bootstrap.ts +440 -0
  170. package/src/vessel-registry.ts +621 -0
  171. package/templates/core/edit-file.json +85 -0
  172. package/templates/understanding/diagnose-problem.json +32 -0
  173. package/templates/understanding/explore-codebase-v2.json +57 -0
  174. package/templates/understanding/explore-codebase.json +37 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Goal Improviser - Execute goals without templates
3
+ *
4
+ * Pure improvisation: LLM figures out what to do step by step,
5
+ * using available tools. Everything is recorded for template extraction.
6
+ */
7
+ import type { ToolResult } from './types';
8
+ export interface ImprovisationStep {
9
+ step: number;
10
+ thought: string;
11
+ action: string;
12
+ params: Record<string, unknown>;
13
+ result: ToolResult;
14
+ duration_ms: number;
15
+ timestamp: string;
16
+ cost_estimate: number;
17
+ }
18
+ export interface ImprovisationTrace {
19
+ execution_id: string;
20
+ goal: string;
21
+ improvisation: true;
22
+ context?: Record<string, unknown>;
23
+ started_at: string;
24
+ completed_at?: string;
25
+ steps: ImprovisationStep[];
26
+ outcome: {
27
+ status: 'success' | 'failure' | 'stuck';
28
+ goal_achieved: boolean;
29
+ total_duration_ms: number;
30
+ total_cost: number;
31
+ total_tokens: {
32
+ input: number;
33
+ output: number;
34
+ };
35
+ files_modified: string[];
36
+ files_created: string[];
37
+ files_deleted: string[];
38
+ error?: string;
39
+ };
40
+ }
41
+ export interface ImprovisationConfig {
42
+ maxSteps?: number;
43
+ temperature?: number;
44
+ stuckThreshold?: number;
45
+ saveTrace?: boolean;
46
+ }
47
+ export interface ImproviserConfig {
48
+ provider?: string;
49
+ apiKey?: string;
50
+ model?: string;
51
+ workingDirectory: string;
52
+ }
53
+ export declare class GoalImproviser {
54
+ private llm;
55
+ private tools;
56
+ private config;
57
+ constructor(config: ImproviserConfig);
58
+ /**
59
+ * Improvise solution to a goal without pre-defined template
60
+ */
61
+ improvise(goal: string, config?: ImprovisationConfig): Promise<ImprovisationTrace>;
62
+ private buildSystemPrompt;
63
+ private formatJSONParseError;
64
+ private parseDecision;
65
+ private formatToolResult;
66
+ private isStuck;
67
+ private extractFilesModified;
68
+ private extractFilesCreated;
69
+ private extractFilesDeleted;
70
+ private estimateCost;
71
+ private saveTrace;
72
+ private randomId;
73
+ }
74
+ //# sourceMappingURL=improviser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improviser.d.ts","sourceRoot":"","sources":["../src/improviser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAe,UAAU,EAA0C,MAAM,SAAS,CAAA;AAQ9F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,OAAO,EAAE;QACP,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;QACvC,aAAa,EAAE,OAAO,CAAA;QACtB,iBAAiB,EAAE,MAAM,CAAA;QACzB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;QACD,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,gBAAgB;IAUpC;;OAEG;IACG,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IA0N9B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,oBAAoB;IAiD5B,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,YAAY;YAQN,SAAS;IAiHvB,OAAO,CAAC,QAAQ;CAGjB"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Impulse Filtering Logic (Phase 1.8)
3
+ *
4
+ * Filters impulses based on learned relevance scores to reduce token usage.
5
+ *
6
+ * Key concepts:
7
+ * - relevance_score: P(success | impulse loaded)
8
+ * - irrelevance_score: P(success | impulse NOT loaded)
9
+ *
10
+ * Decision rules:
11
+ * 1. Always load if relevance_score > 0.8 (strong positive signal)
12
+ * 2. Load if relevance_score > threshold (default: 0.5)
13
+ * 3. Skip if irrelevance_score > relevance_score (better without it)
14
+ * 4. Limit to maxImpulses (default: 10)
15
+ */
16
+ import type { ImpulseRelevanceMetric } from "./mcp";
17
+ export interface FilterConfig {
18
+ relevanceThreshold: number;
19
+ alwaysLoadThreshold: number;
20
+ maxImpulses: number;
21
+ fallbackBehavior: 'load-all' | 'load-none' | 'load-top-n';
22
+ }
23
+ /**
24
+ * Get filter configuration from environment variables
25
+ */
26
+ export declare function getFilterConfig(): FilterConfig;
27
+ export declare const DEFAULT_FILTER_CONFIG: FilterConfig;
28
+ export interface FilterResult {
29
+ toLoad: string[];
30
+ toSkip: string[];
31
+ reasoning: Record<string, string>;
32
+ }
33
+ /**
34
+ * Filter impulses based on relevance scores
35
+ */
36
+ export declare function filterImpulsesByRelevance(impulseIds: string[], metrics: ImpulseRelevanceMetric[], config?: Partial<FilterConfig>): FilterResult;
37
+ export interface TokenSavings {
38
+ tokensSaved: number;
39
+ costSaved: number;
40
+ percentSaved: number;
41
+ totalTokens: number;
42
+ loadedTokens: number;
43
+ }
44
+ /**
45
+ * Calculate token savings from skipped impulses
46
+ */
47
+ export declare function calculateSavings(skippedImpulses: string[], impulseTokenSizes: Map<string, number>): TokenSavings;
48
+ /**
49
+ * Estimate token size for an impulse based on pointer type
50
+ */
51
+ export declare function estimateImpulseTokens(impulse: {
52
+ id: string;
53
+ pointer: {
54
+ type: string;
55
+ [key: string]: any;
56
+ };
57
+ }): number;
58
+ export interface FilteringSummary {
59
+ totalImpulses: number;
60
+ loadedImpulses: number;
61
+ skippedImpulses: number;
62
+ tokensSaved: number;
63
+ costSaved: number;
64
+ percentSaved: number;
65
+ topReasons: Array<{
66
+ reason: string;
67
+ count: number;
68
+ }>;
69
+ }
70
+ /**
71
+ * Generate filtering summary for logging/reporting
72
+ */
73
+ export declare function generateFilteringSummary(filterResult: FilterResult, savings: TokenSavings): FilteringSummary;
74
+ //# sourceMappingURL=impulse-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impulse-filter.d.ts","sourceRoot":"","sources":["../src/impulse-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAA;AAMnD,MAAM,WAAW,YAAY;IAE3B,kBAAkB,EAAE,MAAM,CAAA;IAG1B,mBAAmB,EAAE,MAAM,CAAA;IAG3B,WAAW,EAAE,MAAM,CAAA;IAGnB,gBAAgB,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAA;CAC1D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAc9C;AAED,eAAO,MAAM,qBAAqB,EAAE,YAKnC,CAAA;AAMD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,sBAAsB,EAAE,EACjC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GACjC,YAAY,CAgFd;AAMD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,YAAY,CAmBd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAA;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;CACF,GAAG,MAAM,CAkBT;AAMD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAuBlB"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * minibob Impulse System
3
+ *
4
+ * Minimal impulse implementation for context management.
5
+ * Supports: memo, file, activityOutput, custom pointer types.
6
+ */
7
+ import type { Impulse } from "./types";
8
+ /**
9
+ * In-memory impulse store (can be backed by MCP in production)
10
+ */
11
+ declare class ImpulseStore {
12
+ private impulses;
13
+ private customResolvers;
14
+ private activityOutputs;
15
+ /**
16
+ * Create a new impulse
17
+ */
18
+ create(impulse: Omit<Impulse, "loaded" | "createdAt">): Impulse;
19
+ /**
20
+ * Get an impulse by ID
21
+ */
22
+ get(id: string): Impulse | undefined;
23
+ /**
24
+ * Load an impulse (resolve its pointer and populate content)
25
+ */
26
+ load(id: string): Promise<Impulse>;
27
+ /**
28
+ * Unload an impulse (free memory)
29
+ */
30
+ unload(id: string): void;
31
+ /**
32
+ * Delete an impulse
33
+ */
34
+ delete(id: string): boolean;
35
+ /**
36
+ * List all impulses
37
+ */
38
+ list(): Impulse[];
39
+ /**
40
+ * Register a custom resolver
41
+ */
42
+ registerResolver(name: string, resolver: (data: Record<string, unknown>) => Promise<string>): void;
43
+ /**
44
+ * Store activity output for activityOutput pointer resolution
45
+ */
46
+ storeActivityOutput(activityId: string, taskId: string, output: string): void;
47
+ /**
48
+ * Get activity output
49
+ */
50
+ getActivityOutput(activityId: string, taskId?: string): string | undefined;
51
+ /**
52
+ * Resolve a pointer to content
53
+ *
54
+ * Architecture: MiniBob handles LOCAL types (memo, file) directly.
55
+ * All other types are delegated to backend via MCP.
56
+ */
57
+ private resolvePointer;
58
+ /**
59
+ * Estimate token count (rough approximation: 4 chars per token)
60
+ */
61
+ private estimateTokens;
62
+ }
63
+ /**
64
+ * Get the impulse store (singleton)
65
+ */
66
+ export declare function getImpulseStore(): ImpulseStore;
67
+ /**
68
+ * Create a new impulse
69
+ */
70
+ export declare function createImpulse(impulse: Omit<Impulse, "loaded" | "createdAt">): Impulse;
71
+ /**
72
+ * Load an impulse
73
+ */
74
+ export declare function loadImpulse(id: string): Promise<Impulse>;
75
+ /**
76
+ * Load multiple impulses
77
+ */
78
+ export declare function loadImpulses(ids: string[]): Promise<Impulse[]>;
79
+ /**
80
+ * Format impulses for context injection
81
+ */
82
+ export declare function formatImpulsesForContext(impulses: Impulse[]): string;
83
+ /**
84
+ * Register a custom resolver
85
+ */
86
+ export declare function registerResolver(name: string, resolver: (data: Record<string, unknown>) => Promise<string>): void;
87
+ /**
88
+ * Store activity output
89
+ */
90
+ export declare function storeActivityOutput(activityId: string, taskId: string, output: string): void;
91
+ export {};
92
+ //# sourceMappingURL=impulse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impulse.d.ts","sourceRoot":"","sources":["../src/impulse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,SAAS,CAAA;AAOtD;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,eAAe,CAAwE;IAC/F,OAAO,CAAC,eAAe,CAAyC;IAEhE;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,OAAO;IAuB/D;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCxC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYxB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,IAAI,IAAI,OAAO,EAAE;IAIjB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAIlG;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAY1E;;;;;OAKG;YACW,cAAc;IA4E5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAGvB;AAQD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,OAAO,CAErF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAepE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAEjH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5F"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * minibob Impulse System
3
+ *
4
+ * Minimal impulse implementation for context management.
5
+ * Supports: memo, file, activityOutput, custom pointer types.
6
+ */
7
+ import { getMCPClient, isMCPEnabled } from "./mcp";
8
+ // =============================================================================
9
+ // IMPULSE STORAGE
10
+ // =============================================================================
11
+ /**
12
+ * In-memory impulse store (can be backed by MCP in production)
13
+ */
14
+ class ImpulseStore {
15
+ impulses = new Map();
16
+ customResolvers = new Map();
17
+ activityOutputs = new Map(); // activityId -> taskId -> output
18
+ /**
19
+ * Create a new impulse
20
+ */
21
+ create(impulse) {
22
+ const fullImpulse = {
23
+ ...impulse,
24
+ loaded: false,
25
+ createdAt: Date.now(),
26
+ };
27
+ this.impulses.set(impulse.id, fullImpulse);
28
+ // Store in backend if MCP enabled
29
+ // This enables cross-execution impulse tracking and learning
30
+ // Data flow: impulse.ts:create() → mcp.ts:storeImpulse() → POST /impulses → backend storage
31
+ if (isMCPEnabled()) {
32
+ const mcp = getMCPClient();
33
+ if (mcp) {
34
+ mcp.storeImpulse(fullImpulse).catch((err) => {
35
+ console.warn(`[Impulse] Failed to store in backend: ${err.message}`);
36
+ });
37
+ }
38
+ }
39
+ return fullImpulse;
40
+ }
41
+ /**
42
+ * Get an impulse by ID
43
+ */
44
+ get(id) {
45
+ return this.impulses.get(id);
46
+ }
47
+ /**
48
+ * Load an impulse (resolve its pointer and populate content)
49
+ */
50
+ async load(id) {
51
+ const impulse = this.impulses.get(id);
52
+ if (!impulse) {
53
+ throw new Error(`Impulse not found: ${id}`);
54
+ }
55
+ if (impulse.loaded && impulse.content) {
56
+ return impulse;
57
+ }
58
+ const content = await this.resolvePointer(impulse.pointer);
59
+ const tokenCount = this.estimateTokens(content);
60
+ // Truncate if over budget
61
+ let finalContent = content;
62
+ if (tokenCount > impulse.budget) {
63
+ const ratio = impulse.budget / tokenCount;
64
+ const targetChars = Math.floor(content.length * ratio * 0.9); // 10% safety margin
65
+ finalContent = content.substring(0, targetChars) + "\n... (truncated to fit budget)";
66
+ }
67
+ const loadedImpulse = {
68
+ ...impulse,
69
+ loaded: true,
70
+ content: finalContent,
71
+ tokenCount: Math.min(tokenCount, impulse.budget),
72
+ };
73
+ this.impulses.set(id, loadedImpulse);
74
+ return loadedImpulse;
75
+ }
76
+ /**
77
+ * Unload an impulse (free memory)
78
+ */
79
+ unload(id) {
80
+ const impulse = this.impulses.get(id);
81
+ if (impulse) {
82
+ this.impulses.set(id, {
83
+ ...impulse,
84
+ loaded: false,
85
+ content: undefined,
86
+ tokenCount: undefined,
87
+ });
88
+ }
89
+ }
90
+ /**
91
+ * Delete an impulse
92
+ */
93
+ delete(id) {
94
+ return this.impulses.delete(id);
95
+ }
96
+ /**
97
+ * List all impulses
98
+ */
99
+ list() {
100
+ return Array.from(this.impulses.values());
101
+ }
102
+ /**
103
+ * Register a custom resolver
104
+ */
105
+ registerResolver(name, resolver) {
106
+ this.customResolvers.set(name, resolver);
107
+ }
108
+ /**
109
+ * Store activity output for activityOutput pointer resolution
110
+ */
111
+ storeActivityOutput(activityId, taskId, output) {
112
+ if (!this.activityOutputs.has(activityId)) {
113
+ this.activityOutputs.set(activityId, new Map());
114
+ }
115
+ this.activityOutputs.get(activityId).set(taskId, output);
116
+ }
117
+ /**
118
+ * Get activity output
119
+ */
120
+ getActivityOutput(activityId, taskId) {
121
+ const outputs = this.activityOutputs.get(activityId);
122
+ if (!outputs)
123
+ return undefined;
124
+ if (taskId) {
125
+ return outputs.get(taskId);
126
+ }
127
+ // Return all outputs concatenated
128
+ return Array.from(outputs.values()).join("\n\n---\n\n");
129
+ }
130
+ /**
131
+ * Resolve a pointer to content
132
+ */
133
+ async resolvePointer(pointer) {
134
+ switch (pointer.type) {
135
+ case "memo":
136
+ return pointer.content;
137
+ case "file": {
138
+ const file = Bun.file(pointer.path);
139
+ if (!(await file.exists())) {
140
+ throw new Error(`File not found: ${pointer.path}`);
141
+ }
142
+ const content = await file.text();
143
+ const lines = content.split("\n");
144
+ const offset = pointer.offset ?? 0;
145
+ const limit = pointer.limit ?? lines.length;
146
+ return lines.slice(offset, offset + limit).join("\n");
147
+ }
148
+ case "activityOutput": {
149
+ const output = this.getActivityOutput(pointer.activityId, pointer.taskId);
150
+ if (!output) {
151
+ throw new Error(`Activity output not found: ${pointer.activityId}${pointer.taskId ? `/${pointer.taskId}` : ""}`);
152
+ }
153
+ return output;
154
+ }
155
+ case "custom": {
156
+ const resolver = this.customResolvers.get(pointer.resolver);
157
+ if (!resolver) {
158
+ throw new Error(`Custom resolver not found: ${pointer.resolver}`);
159
+ }
160
+ return await resolver(pointer.data);
161
+ }
162
+ default:
163
+ throw new Error(`Unknown pointer type: ${pointer.type}`);
164
+ }
165
+ }
166
+ /**
167
+ * Estimate token count (rough approximation: 4 chars per token)
168
+ */
169
+ estimateTokens(content) {
170
+ return Math.ceil(content.length / 4);
171
+ }
172
+ }
173
+ // =============================================================================
174
+ // IMPULSE MANAGER (Singleton)
175
+ // =============================================================================
176
+ let store = null;
177
+ /**
178
+ * Get the impulse store (singleton)
179
+ */
180
+ export function getImpulseStore() {
181
+ if (!store) {
182
+ store = new ImpulseStore();
183
+ }
184
+ return store;
185
+ }
186
+ /**
187
+ * Create a new impulse
188
+ */
189
+ export function createImpulse(impulse) {
190
+ return getImpulseStore().create(impulse);
191
+ }
192
+ /**
193
+ * Load an impulse
194
+ */
195
+ export async function loadImpulse(id) {
196
+ return getImpulseStore().load(id);
197
+ }
198
+ /**
199
+ * Load multiple impulses
200
+ */
201
+ export async function loadImpulses(ids) {
202
+ return Promise.all(ids.map((id) => loadImpulse(id)));
203
+ }
204
+ /**
205
+ * Format impulses for context injection
206
+ */
207
+ export function formatImpulsesForContext(impulses) {
208
+ if (impulses.length === 0)
209
+ return "";
210
+ const formatted = impulses
211
+ .filter((imp) => imp.loaded && imp.content)
212
+ .map((imp) => {
213
+ return `<impulse id="${imp.id}" type="${imp.pointer.type}" tokens="${imp.tokenCount ?? 0}/${imp.budget}">
214
+ ${imp.content}
215
+ </impulse>`;
216
+ })
217
+ .join("\n\n");
218
+ return `<impulse_context>
219
+ ${formatted}
220
+ </impulse_context>`;
221
+ }
222
+ /**
223
+ * Register a custom resolver
224
+ */
225
+ export function registerResolver(name, resolver) {
226
+ getImpulseStore().registerResolver(name, resolver);
227
+ }
228
+ /**
229
+ * Store activity output
230
+ */
231
+ export function storeActivityOutput(activityId, taskId, output) {
232
+ getImpulseStore().storeActivityOutput(activityId, taskId, output);
233
+ }
234
+ //# sourceMappingURL=impulse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impulse.js","sourceRoot":"","sources":["../src/impulse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAElD,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,YAAY;IACR,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;IACrC,eAAe,GAAG,IAAI,GAAG,EAA8D,CAAA;IACvF,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAA,CAAC,iCAAiC;IAElG;;OAEG;IACH,MAAM,CAAC,OAA8C;QACnD,MAAM,WAAW,GAAY;YAC3B,GAAG,OAAO;YACV,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAE1C,kCAAkC;QAClC,6DAA6D;QAC7D,4FAA4F;QAC5F,IAAI,YAAY,EAAE,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAA;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;oBACjD,OAAO,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBACtE,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,0BAA0B;QAC1B,IAAI,YAAY,GAAG,OAAO,CAAA;QAC1B,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAA;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,CAAA,CAAC,oBAAoB;YACjF,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,iCAAiC,CAAA;QACtF,CAAC;QAED,MAAM,aAAa,GAAY;YAC7B,GAAG,OAAO;YACV,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;SACjD,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;QACpC,OAAO,aAAa,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;gBACpB,GAAG,OAAO;gBACV,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,SAAS;aACtB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY,EAAE,QAA4D;QACzF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAkB,EAAE,MAAc,EAAE,MAAc;QACpE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB,EAAE,MAAe;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACpD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAE9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;QAED,kCAAkC;QAClC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,OAAuB;QAClD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC,OAAO,CAAA;YAExB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACnC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBACpD,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAA;gBAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvD,CAAC;YAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;gBACzE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAClH,CAAC;gBACD,OAAO,MAAM,CAAA;YACf,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACnE,CAAC;gBACD,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACrC,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,yBAA0B,OAA0B,CAAC,IAAI,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC;CACF;AAED,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF,IAAI,KAAK,GAAwB,IAAI,CAAA;AAErC;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAA8C;IAC1E,OAAO,eAAe,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IAC1C,OAAO,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAa;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAmB;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEpC,MAAM,SAAS,GAAG,QAAQ;SACvB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC;SAC1C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,gBAAgB,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;EAC1G,GAAG,CAAC,OAAO;WACF,CAAA;IACP,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAA;IAEf,OAAO;EACP,SAAS;mBACQ,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAA4D;IACzG,eAAe,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,MAAc,EAAE,MAAc;IACpF,eAAe,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACnE,CAAC"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @metabob/minibob - Library Entry Point
3
+ *
4
+ * Public API for using minibob as a library (not CLI).
5
+ * Import this when using minibob from other applications like metabob-opencode.
6
+ *
7
+ * Example:
8
+ * import { ActivityExecutor, ImpulseStore } from "@metabob/minibob"
9
+ */
10
+ export { ActivityExecutor, loadTemplate, loadTemplateFromMCPOrLocal } from "./activity";
11
+ export type { ExecutorConfig, ExecuteOptions } from "./activity";
12
+ export { createImpulse, loadImpulses, formatImpulsesForContext, storeActivityOutput, getImpulseStore, } from "./impulse";
13
+ export { createSession, getSession, recordExecution, completeSession, getActiveSessions, clearSessions, } from "./session";
14
+ export type { SessionTracker, SessionExecutionItem } from "./session";
15
+ export { initializeMCP, getMCPClient, isMCPEnabled, MCPClient } from "./mcp";
16
+ export type { MCPConfig } from "./mcp";
17
+ export { createToolHandlers, getAllToolDefinitions } from "./tools";
18
+ export type { ToolHandlerOptions, ToolDefinition } from "./tools";
19
+ export type { ActivityTemplate, ActivityExecution, ActivityTask, TaskResult, Impulse, ImpulsePointer, Message, ToolHandler, ToolResult, } from "./types";
20
+ export { handleACPRequest } from "./acp";
21
+ export type { ACPServerConfig } from "./acp";
22
+ export { initializeBoredom, startBoredom, markBoredomActivity, type BoredomExecutorConfig, type BoredomTask, type BoredomTaskResult, } from "./boredom";
23
+ export { SessionMemoryAgent } from "./memory-agent";
24
+ export { LifecycleHooks } from "./lifecycle-hooks";
25
+ export { GoalProcessor } from "./goal-processor";
26
+ export type { Goal, ActivityRecommendation, GoalResult } from "./goal-processor";
27
+ export { loadConfig, generateManifest, configSummary } from "./config";
28
+ export type { RuntimeContext } from "./config";
29
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AACvF,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAA;AAMlB,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMrE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5E,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAMjE,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,OAAO,EACP,cAAc,EACd,OAAO,EACP,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAA;AAMhB,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,YAAY,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAM5C,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAA;AAkBlB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAMnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMlD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAMhF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA"}