@jungjaehoon/mama-os 0.32.2 → 0.32.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +1 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/operator/operator-trigger-loop.d.ts +22 -6
- package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
- package/dist/operator/operator-trigger-loop.js +197 -68
- package/dist/operator/operator-trigger-loop.js.map +1 -1
- package/dist/operator/trigger-author.d.ts +10 -2
- package/dist/operator/trigger-author.d.ts.map +1 -1
- package/dist/operator/trigger-author.js +112 -39
- package/dist/operator/trigger-author.js.map +1 -1
- package/dist/operator/trigger-registry.d.ts +21 -0
- package/dist/operator/trigger-registry.d.ts.map +1 -1
- package/dist/operator/trigger-registry.js +161 -1
- package/dist/operator/trigger-registry.js.map +1 -1
- package/dist/operator/trigger-review.d.ts.map +1 -1
- package/dist/operator/trigger-review.js +56 -10
- package/dist/operator/trigger-review.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,14 @@ exports.buildReviewPrompt = buildReviewPrompt;
|
|
|
17
17
|
exports.reviewTriggerCLI = reviewTriggerCLI;
|
|
18
18
|
const node_crypto_1 = require("node:crypto");
|
|
19
19
|
const trigger_author_js_1 = require("./trigger-author.js");
|
|
20
|
+
const REVIEW_PROMPT_MAX_CHARS = 30_000;
|
|
21
|
+
const REVIEW_TRIGGER_ID_CHARS = 512;
|
|
22
|
+
const REVIEW_TRIGGER_KIND_CHARS = 512;
|
|
23
|
+
const REVIEW_TRIGGER_KEYWORDS_CHARS = 8_000;
|
|
24
|
+
const REVIEW_TRIGGER_KEYWORD_CHARS = 256;
|
|
25
|
+
const REVIEW_MEMORY_QUERY_CHARS = 8_000;
|
|
26
|
+
const REVIEW_CONTEXT_CHARS = 8_000;
|
|
27
|
+
const REVIEW_CONTEXT_LINE_CHARS = 500;
|
|
20
28
|
function parseReviewDecision(text) {
|
|
21
29
|
const raw = extractJsonObject(stripCodeFences(text));
|
|
22
30
|
if (raw === null)
|
|
@@ -53,11 +61,10 @@ function parseReviewDecision(text) {
|
|
|
53
61
|
/** Mechanically apply the agent's decision to the registry (mirror of evolveTrigger's apply, minus outcome recording). */
|
|
54
62
|
function applyReview(decision, triggerId, registry) {
|
|
55
63
|
if (decision.action === 'retired') {
|
|
56
|
-
registry.
|
|
64
|
+
registry.retireActive(triggerId, decision.reason);
|
|
57
65
|
return 'retired';
|
|
58
66
|
}
|
|
59
67
|
if (decision.action === 'refined') {
|
|
60
|
-
registry.disable(triggerId, `refined: ${decision.reason}`);
|
|
61
68
|
const spec = decision.newSpec;
|
|
62
69
|
const id = spec.id ?? `${triggerId}.r.${reviewHash(spec.kind, spec.match.keywords)}`;
|
|
63
70
|
const input = {
|
|
@@ -70,25 +77,30 @@ function applyReview(decision, triggerId, registry) {
|
|
|
70
77
|
authoredBy: 'agent',
|
|
71
78
|
provenance: { createdFrom: `refined-from:${triggerId}`, note: decision.reason },
|
|
72
79
|
};
|
|
73
|
-
registry.
|
|
80
|
+
registry.refine(triggerId, `refined: ${decision.reason}`, input);
|
|
74
81
|
return 'refined';
|
|
75
82
|
}
|
|
76
83
|
return 'kept';
|
|
77
84
|
}
|
|
78
85
|
function buildReviewPrompt(trigger, recentContext) {
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
const triggerId = boundedPromptValue(trigger.id, REVIEW_TRIGGER_ID_CHARS);
|
|
87
|
+
const kind = boundedPromptValue(trigger.kind, REVIEW_TRIGGER_KIND_CHARS);
|
|
88
|
+
const memoryQuery = boundedPromptValue(trigger.memoryQuery, REVIEW_MEMORY_QUERY_CHARS);
|
|
89
|
+
const keywords = boundedPromptLines(trigger.match.keywords, REVIEW_TRIGGER_KEYWORD_CHARS, REVIEW_TRIGGER_KEYWORDS_CHARS, ', ');
|
|
90
|
+
const context = boundedPromptLines(recentContext, REVIEW_CONTEXT_LINE_CHARS, REVIEW_CONTEXT_CHARS, '\n- ', true);
|
|
91
|
+
const prompt = [
|
|
92
|
+
"You maintain a personal operator's library of TRIGGERS (keyword rules that recall a memory",
|
|
81
93
|
'when future messages match). Review ONE trigger and decide whether to keep, refine, or',
|
|
82
94
|
'retire it, based on its spec, its fire activity, and recent messages.',
|
|
83
95
|
'',
|
|
84
|
-
`Trigger id: ${
|
|
85
|
-
`kind: ${
|
|
86
|
-
`keywords (${trigger.match.keywordMode}): ${
|
|
87
|
-
`memoryQuery: ${
|
|
96
|
+
`Trigger id: ${triggerId}`,
|
|
97
|
+
`kind: ${kind}`,
|
|
98
|
+
`keywords (${trigger.match.keywordMode}): ${keywords}`,
|
|
99
|
+
`memoryQuery: ${memoryQuery}`,
|
|
88
100
|
`stats: fired=${trigger.stats.fired} succeeded=${trigger.stats.succeeded} failed=${trigger.stats.failed}`,
|
|
89
101
|
'',
|
|
90
102
|
'Recent messages (context):',
|
|
91
|
-
|
|
103
|
+
context === '' ? '(none)' : `- ${context}`,
|
|
92
104
|
'',
|
|
93
105
|
'Judge for yourself - there is no fixed rule. Firing a lot on irrelevant messages suggests',
|
|
94
106
|
'refine (narrower keywords) or retire; firing usefully suggests keep; never firing may mean',
|
|
@@ -101,6 +113,40 @@ function buildReviewPrompt(trigger, recentContext) {
|
|
|
101
113
|
' "match": { "keywords": string[], "keywordMode": "any"|"every", "minConfidence": number },',
|
|
102
114
|
' "procedure": [{ "action": string, "description": string }], "requiredEvidence": string[] } }',
|
|
103
115
|
].join('\n');
|
|
116
|
+
if (prompt.length > REVIEW_PROMPT_MAX_CHARS) {
|
|
117
|
+
throw new Error(`review prompt exceeded ${REVIEW_PROMPT_MAX_CHARS} character budget`);
|
|
118
|
+
}
|
|
119
|
+
return prompt;
|
|
120
|
+
}
|
|
121
|
+
function boundedPromptValue(value, maxChars) {
|
|
122
|
+
const sanitized = value.replace(/[\r\n]+/g, ' ');
|
|
123
|
+
if (sanitized.length <= maxChars)
|
|
124
|
+
return sanitized;
|
|
125
|
+
return `${sanitized.slice(0, maxChars - 16)} [...truncated]`;
|
|
126
|
+
}
|
|
127
|
+
function boundedPromptLines(values, perValueChars, totalChars, separator, newestFirstBudget = false) {
|
|
128
|
+
const selected = [];
|
|
129
|
+
let used = 0;
|
|
130
|
+
const candidates = newestFirstBudget ? [...values].reverse() : values;
|
|
131
|
+
for (const value of candidates) {
|
|
132
|
+
const bounded = boundedPromptValue(value, perValueChars);
|
|
133
|
+
const added = bounded.length + (selected.length === 0 ? 0 : separator.length);
|
|
134
|
+
if (used + added > totalChars)
|
|
135
|
+
break;
|
|
136
|
+
selected.push(bounded);
|
|
137
|
+
used += added;
|
|
138
|
+
}
|
|
139
|
+
const ordered = newestFirstBudget ? selected.reverse() : selected;
|
|
140
|
+
if (selected.length < values.length) {
|
|
141
|
+
const omitted = `[... ${values.length - selected.length} item(s) omitted]`;
|
|
142
|
+
if (used + separator.length + omitted.length <= totalChars) {
|
|
143
|
+
if (newestFirstBudget)
|
|
144
|
+
ordered.unshift(omitted);
|
|
145
|
+
else
|
|
146
|
+
ordered.push(omitted);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return ordered.join(separator);
|
|
104
150
|
}
|
|
105
151
|
/** Real agent review via the local claude CLI. Exercised in the M1-T4 live smoke. */
|
|
106
152
|
async function reviewTriggerCLI(trigger, recentContext, askAgent = trigger_author_js_1.askAgentCLI) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-review.js","sourceRoot":"","sources":["../../src/operator/trigger-review.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;
|
|
1
|
+
{"version":3,"file":"trigger-review.js","sourceRoot":"","sources":["../../src/operator/trigger-review.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED