@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.
- package/ARCHITECTURE.md +255 -0
- package/CHANGELOG.md +112 -0
- package/README.md +380 -0
- package/bin/minibob.js +36 -0
- package/dist/acp-gossip.d.ts +72 -0
- package/dist/acp-gossip.d.ts.map +1 -0
- package/dist/acp-gossip.js +156 -0
- package/dist/acp-gossip.js.map +1 -0
- package/dist/acp.d.ts +62 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +292 -0
- package/dist/acp.js.map +1 -0
- package/dist/activity.d.ts +157 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +518 -0
- package/dist/activity.js.map +1 -0
- package/dist/agent-runtime.d.ts +104 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/boredom.d.ts +125 -0
- package/dist/boredom.d.ts.map +1 -0
- package/dist/boredom.js +244 -0
- package/dist/boredom.js.map +1 -0
- package/dist/cli/acp-server.d.ts +23 -0
- package/dist/cli/acp-server.d.ts.map +1 -0
- package/dist/cli/burrow.d.ts +26 -0
- package/dist/cli/burrow.d.ts.map +1 -0
- package/dist/cli/doctor.d.ts +22 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/goal.d.ts +22 -0
- package/dist/cli/goal.d.ts.map +1 -0
- package/dist/cli/index.d.ts +47 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/instance-registry.d.ts +78 -0
- package/dist/cli/instance-registry.d.ts.map +1 -0
- package/dist/cli/observe.d.ts +35 -0
- package/dist/cli/observe.d.ts.map +1 -0
- package/dist/cli/vessel.d.ts +14 -0
- package/dist/cli/vessel.d.ts.map +1 -0
- package/dist/composition-observer.d.ts +96 -0
- package/dist/composition-observer.d.ts.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +128 -0
- package/dist/config.js.map +1 -0
- package/dist/docker/Dockerfile +35 -0
- package/dist/environment.d.ts +72 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +142 -0
- package/dist/environment.js.map +1 -0
- package/dist/goal-processor.d.ts +165 -0
- package/dist/goal-processor.d.ts.map +1 -0
- package/dist/helm/minibob-cluster/Chart.yaml +13 -0
- package/dist/helm/minibob-cluster/templates/_helpers.tpl +60 -0
- package/dist/helm/minibob-cluster/templates/configmap.yaml +11 -0
- package/dist/helm/minibob-cluster/templates/deployment.yaml +108 -0
- package/dist/helm/minibob-cluster/templates/secret.yaml +10 -0
- package/dist/helm/minibob-cluster/templates/service.yaml +37 -0
- package/dist/helm/minibob-cluster/values-local.yaml +41 -0
- package/dist/helm/minibob-cluster/values-production.yaml +57 -0
- package/dist/helm/minibob-cluster/values-testing-cluster.yaml +43 -0
- package/dist/helm/minibob-cluster/values.yaml +127 -0
- package/dist/improviser.d.ts +74 -0
- package/dist/improviser.d.ts.map +1 -0
- package/dist/impulse-filter.d.ts +74 -0
- package/dist/impulse-filter.d.ts.map +1 -0
- package/dist/impulse.d.ts +92 -0
- package/dist/impulse.d.ts.map +1 -0
- package/dist/impulse.js +234 -0
- package/dist/impulse.js.map +1 -0
- package/dist/lib.d.ts +29 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +18561 -0
- package/dist/lib.js.map +98 -0
- package/dist/lifecycle-hooks.d.ts +99 -0
- package/dist/lifecycle-hooks.d.ts.map +1 -0
- package/dist/lifecycle-hooks.js +135 -0
- package/dist/lifecycle-hooks.js.map +1 -0
- package/dist/llm.d.ts +31 -0
- package/dist/llm.d.ts.map +1 -0
- package/dist/llm.js +349 -0
- package/dist/llm.js.map +1 -0
- package/dist/mcp-activity-bridge.d.ts +66 -0
- package/dist/mcp-activity-bridge.d.ts.map +1 -0
- package/dist/mcp-activity-bridge.js +126 -0
- package/dist/mcp-activity-bridge.js.map +1 -0
- package/dist/mcp.d.ts +216 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +292 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory-agent.d.ts +92 -0
- package/dist/memory-agent.d.ts.map +1 -0
- package/dist/memory-agent.js +277 -0
- package/dist/memory-agent.js.map +1 -0
- package/dist/runtime-mapping.d.ts +97 -0
- package/dist/runtime-mapping.d.ts.map +1 -0
- package/dist/search-first-executor.d.ts +113 -0
- package/dist/search-first-executor.d.ts.map +1 -0
- package/dist/session.d.ts +48 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/template-extractor.d.ts +9 -0
- package/dist/template-extractor.d.ts.map +1 -0
- package/dist/template-generator.d.ts +12 -0
- package/dist/template-generator.d.ts.map +1 -0
- package/dist/tools.d.ts +58 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +771 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +503 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/understanding/analyzer.d.ts +55 -0
- package/dist/understanding/analyzer.d.ts.map +1 -0
- package/dist/understanding/explorer.d.ts +73 -0
- package/dist/understanding/explorer.d.ts.map +1 -0
- package/dist/understanding/index.d.ts +7 -0
- package/dist/understanding/index.d.ts.map +1 -0
- package/dist/understanding/types.d.ts +136 -0
- package/dist/understanding/types.d.ts.map +1 -0
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +106 -0
- package/dist/validation.js.map +1 -0
- package/dist/vessel-bootstrap.d.ts +190 -0
- package/dist/vessel-bootstrap.d.ts.map +1 -0
- package/dist/vessel-registry.d.ts +229 -0
- package/dist/vessel-registry.d.ts.map +1 -0
- package/index.ts +1329 -0
- package/package.json +54 -0
- package/src/acp-gossip.ts +193 -0
- package/src/acp.ts +362 -0
- package/src/activity.ts +1464 -0
- package/src/agent-runtime.ts +365 -0
- package/src/boredom.ts +423 -0
- package/src/cli/acp-server.ts +377 -0
- package/src/cli/burrow.ts +896 -0
- package/src/cli/doctor.ts +526 -0
- package/src/cli/goal.ts +224 -0
- package/src/cli/index.ts +147 -0
- package/src/cli/instance-registry.ts +271 -0
- package/src/cli/observe.ts +682 -0
- package/src/cli/vessel.ts +287 -0
- package/src/components/SystemOverview.tsx +331 -0
- package/src/composition-observer.ts +449 -0
- package/src/config.ts +172 -0
- package/src/environment.ts +167 -0
- package/src/goal-processor.ts +654 -0
- package/src/improviser.ts +591 -0
- package/src/impulse-filter.ts +273 -0
- package/src/impulse.ts +311 -0
- package/src/lib.ts +147 -0
- package/src/lifecycle-hooks.ts +181 -0
- package/src/llm.ts +434 -0
- package/src/mcp-activity-bridge.ts +158 -0
- package/src/mcp.ts +747 -0
- package/src/memory-agent.ts +316 -0
- package/src/runtime-mapping.ts +527 -0
- package/src/search-first-executor.ts +666 -0
- package/src/session.ts +141 -0
- package/src/template-extractor.ts +256 -0
- package/src/template-generator.ts +130 -0
- package/src/tools.ts +924 -0
- package/src/types.ts +497 -0
- package/src/understanding/analyzer.ts +354 -0
- package/src/understanding/explorer.ts +488 -0
- package/src/understanding/index.ts +27 -0
- package/src/understanding/types.ts +153 -0
- package/src/validation.ts +125 -0
- package/src/vessel-bootstrap.ts +440 -0
- package/src/vessel-registry.ts +621 -0
- package/templates/core/edit-file.json +85 -0
- package/templates/understanding/diagnose-problem.json +32 -0
- package/templates/understanding/explore-codebase-v2.json +57 -0
- 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"}
|
package/dist/impulse.js
ADDED
|
@@ -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":"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"}
|
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"}
|