opensquid 0.5.407 → 0.5.426
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.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/functions/event.d.ts.map +1 -1
- package/dist/functions/event.js +30 -0
- package/dist/functions/event.js.map +1 -1
- package/dist/functions/handoff_session_start.d.ts.map +1 -1
- package/dist/functions/handoff_session_start.js +4 -6
- package/dist/functions/handoff_session_start.js.map +1 -1
- package/dist/functions/index.d.ts +4 -0
- package/dist/functions/index.d.ts.map +1 -1
- package/dist/functions/index.js +5 -0
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/read_rubric.d.ts +27 -0
- package/dist/functions/read_rubric.d.ts.map +1 -0
- package/dist/functions/read_rubric.js +53 -0
- package/dist/functions/read_rubric.js.map +1 -0
- package/dist/functions/reset_scope_track_state.d.ts +20 -0
- package/dist/functions/reset_scope_track_state.d.ts.map +1 -0
- package/dist/functions/reset_scope_track_state.js +53 -0
- package/dist/functions/reset_scope_track_state.js.map +1 -0
- package/dist/functions/rubric_pre_inject.d.ts +22 -0
- package/dist/functions/rubric_pre_inject.d.ts.map +1 -0
- package/dist/functions/rubric_pre_inject.js +58 -0
- package/dist/functions/rubric_pre_inject.js.map +1 -0
- package/dist/functions/session_tool_history.d.ts +3 -3
- package/dist/functions/session_tool_history.js +1 -1
- package/dist/functions/session_tool_history.js.map +1 -1
- package/dist/functions/shell_parse.d.ts +41 -0
- package/dist/functions/shell_parse.d.ts.map +1 -0
- package/dist/functions/shell_parse.js +185 -0
- package/dist/functions/shell_parse.js.map +1 -0
- package/dist/functions/staged_docs_only.d.ts +23 -0
- package/dist/functions/staged_docs_only.d.ts.map +1 -0
- package/dist/functions/staged_docs_only.js +57 -0
- package/dist/functions/staged_docs_only.js.map +1 -0
- package/dist/mcp/server.js +14 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/ralph.d.ts +21 -0
- package/dist/mcp/tools/ralph.d.ts.map +1 -0
- package/dist/mcp/tools/ralph.js +18 -0
- package/dist/mcp/tools/ralph.js.map +1 -0
- package/dist/mcp/tools/workgraph.d.ts +11 -0
- package/dist/mcp/tools/workgraph.d.ts.map +1 -1
- package/dist/mcp/tools/workgraph.js +7 -0
- package/dist/mcp/tools/workgraph.js.map +1 -1
- package/dist/rag/backend_factory.d.ts.map +1 -1
- package/dist/rag/backend_factory.js +4 -0
- package/dist/rag/backend_factory.js.map +1 -1
- package/dist/rag/backends/libsql_lexical.d.ts.map +1 -1
- package/dist/rag/backends/libsql_lexical.js +21 -5
- package/dist/rag/backends/libsql_lexical.js.map +1 -1
- package/dist/rag/backends/libsql_store.d.ts.map +1 -1
- package/dist/rag/backends/libsql_store.js +33 -6
- package/dist/rag/backends/libsql_store.js.map +1 -1
- package/dist/rag/backends/perfile_source.d.ts.map +1 -1
- package/dist/rag/backends/perfile_source.js +3 -0
- package/dist/rag/backends/perfile_source.js.map +1 -1
- package/dist/rag/memory/consolidate.d.ts +3 -2
- package/dist/rag/memory/consolidate.d.ts.map +1 -1
- package/dist/rag/memory/consolidate.js +7 -4
- package/dist/rag/memory/consolidate.js.map +1 -1
- package/dist/rag/types.d.ts +2 -0
- package/dist/rag/types.d.ts.map +1 -1
- package/dist/rag/types.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +8 -0
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/coding_flow_keys.d.ts +17 -0
- package/dist/runtime/coding_flow_keys.d.ts.map +1 -0
- package/dist/runtime/coding_flow_keys.js +21 -0
- package/dist/runtime/coding_flow_keys.js.map +1 -0
- package/dist/runtime/handoff/collect.d.ts.map +1 -1
- package/dist/runtime/handoff/collect.js +3 -1
- package/dist/runtime/handoff/collect.js.map +1 -1
- package/dist/runtime/hooks/session-start.js +5 -1
- package/dist/runtime/hooks/session-start.js.map +1 -1
- package/dist/runtime/hooks/session_id.d.ts +7 -0
- package/dist/runtime/hooks/session_id.d.ts.map +1 -1
- package/dist/runtime/hooks/session_id.js +30 -12
- package/dist/runtime/hooks/session_id.js.map +1 -1
- package/dist/runtime/protected_paths.d.ts +18 -0
- package/dist/runtime/protected_paths.d.ts.map +1 -0
- package/dist/runtime/protected_paths.js +18 -0
- package/dist/runtime/protected_paths.js.map +1 -0
- package/dist/runtime/ralph/decision_classifier.d.ts +18 -0
- package/dist/runtime/ralph/decision_classifier.d.ts.map +1 -0
- package/dist/runtime/ralph/decision_classifier.js +72 -0
- package/dist/runtime/ralph/decision_classifier.js.map +1 -0
- package/dist/runtime/ralph/escalate_lap.d.ts +31 -0
- package/dist/runtime/ralph/escalate_lap.d.ts.map +1 -0
- package/dist/runtime/ralph/escalate_lap.js +22 -0
- package/dist/runtime/ralph/escalate_lap.js.map +1 -0
- package/dist/runtime/ralph/escalator.d.ts +34 -0
- package/dist/runtime/ralph/escalator.d.ts.map +1 -0
- package/dist/runtime/ralph/escalator.js +19 -0
- package/dist/runtime/ralph/escalator.js.map +1 -0
- package/dist/runtime/ralph/lap_outcome.d.ts +43 -0
- package/dist/runtime/ralph/lap_outcome.d.ts.map +1 -0
- package/dist/runtime/ralph/lap_outcome.js +119 -0
- package/dist/runtime/ralph/lap_outcome.js.map +1 -0
- package/dist/runtime/ralph/orchestrator.d.ts +71 -0
- package/dist/runtime/ralph/orchestrator.d.ts.map +1 -0
- package/dist/runtime/ralph/orchestrator.js +74 -0
- package/dist/runtime/ralph/orchestrator.js.map +1 -0
- package/dist/runtime/ralph/ralph_template.d.ts +18 -0
- package/dist/runtime/ralph/ralph_template.d.ts.map +1 -0
- package/dist/runtime/ralph/ralph_template.js +61 -0
- package/dist/runtime/ralph/ralph_template.js.map +1 -0
- package/dist/runtime/ralph/supervisor.d.ts +30 -0
- package/dist/runtime/ralph/supervisor.d.ts.map +1 -0
- package/dist/runtime/ralph/supervisor.js +24 -0
- package/dist/runtime/ralph/supervisor.js.map +1 -0
- package/dist/runtime/session_state.d.ts +9 -1
- package/dist/runtime/session_state.d.ts.map +1 -1
- package/dist/runtime/session_state.js +25 -3
- package/dist/runtime/session_state.js.map +1 -1
- package/dist/runtime/wedge/compression_deps.d.ts.map +1 -1
- package/dist/runtime/wedge/compression_deps.js +9 -1
- package/dist/runtime/wedge/compression_deps.js.map +1 -1
- package/dist/setup/cli/gate.d.ts +7 -2
- package/dist/setup/cli/gate.d.ts.map +1 -1
- package/dist/setup/cli/gate.js +7 -3
- package/dist/setup/cli/gate.js.map +1 -1
- package/dist/setup/cli/ralph.d.ts +20 -0
- package/dist/setup/cli/ralph.d.ts.map +1 -0
- package/dist/setup/cli/ralph.js +168 -0
- package/dist/setup/cli/ralph.js.map +1 -0
- package/dist/setup/wizard/ralph_writer.d.ts +98 -0
- package/dist/setup/wizard/ralph_writer.d.ts.map +1 -0
- package/dist/setup/wizard/ralph_writer.js +114 -0
- package/dist/setup/wizard/ralph_writer.js.map +1 -0
- package/dist/workgraph/audience.d.ts +12 -0
- package/dist/workgraph/audience.d.ts.map +1 -0
- package/dist/workgraph/audience.js +10 -0
- package/dist/workgraph/audience.js.map +1 -0
- package/dist/workgraph/events.d.ts.map +1 -1
- package/dist/workgraph/events.js +34 -0
- package/dist/workgraph/events.js.map +1 -1
- package/dist/workgraph/store.d.ts.map +1 -1
- package/dist/workgraph/store.js +86 -12
- package/dist/workgraph/store.js.map +1 -1
- package/dist/workgraph/types.d.ts +33 -2
- package/dist/workgraph/types.d.ts.map +1 -1
- package/docs/rubric/author.md +17 -0
- package/docs/rubric/scope.md +16 -0
- package/package.json +3 -2
- package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +15 -0
- package/packs/builtin/coding-flow/skills/execute-gate/skill.yaml +9 -10
- package/packs/builtin/coding-flow/skills/scope-lifecycle/skill.yaml +72 -51
- package/packs/builtin/default-discipline/manifest.yaml +6 -3
- package/packs/builtin/default-discipline/skills/workflow/skill.yaml +19 -6
- package/packs/builtin/pack-architect/SKILL.md +10 -0
- package/packs/builtin/pack-architect/skills/skill-yaml-author-walkthrough/skill.yaml +7 -0
- package/packs/builtin/scope-architect/team.yaml +5 -2
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quote-aware shell tokenizer + git-invocation predicate. Pure, deterministic, total.
|
|
3
|
+
*
|
|
4
|
+
* Backs the `command_invokes` event primitive (src/functions/event.ts), which gates on a
|
|
5
|
+
* REAL git invocation instead of a raw-string match against the whole command — the
|
|
6
|
+
* false-fire root cause (wg-52e57e2ed252: `git commit` inside a grep pattern / echo arg /
|
|
7
|
+
* quoted subprocess prompt tripped the substring matcher).
|
|
8
|
+
*
|
|
9
|
+
* Threat model (load-bearing — pre-research §0): best-effort, honest-agent self-discipline,
|
|
10
|
+
* NOT adversary-proof. An agent controls its own shell and could evade any in-session check;
|
|
11
|
+
* the HARD boundary is the owned git pre-commit/pre-push hook reading the real staged diff.
|
|
12
|
+
* So this handles the command forms an honest agent actually types (quotes, compound
|
|
13
|
+
* `&&`/`||`/`|`/`;`, git globals `-C`/`-c`), not obfuscated evasion (command substitution,
|
|
14
|
+
* heredocs) — those are out of scope here and caught at the commit boundary.
|
|
15
|
+
*
|
|
16
|
+
* Contrast with `isReadOnlyBash` (src/runtime/session_state.ts:146): that splitter is
|
|
17
|
+
* quote-BLIND (`split(/\|\||&&|;|\|/)`), acceptable there because it is fail-closed and
|
|
18
|
+
* additive. A gate's mis-split is the bug, so this tokenizer is quote-aware.
|
|
19
|
+
*
|
|
20
|
+
* Imported by: src/functions/event.ts (the `command_invokes` primitive).
|
|
21
|
+
*/
|
|
22
|
+
// Bound input length (DoS / step-cap hygiene; matches the expression-fn ~10k convention,
|
|
23
|
+
// src/runtime/evaluator/expression/functions.ts:16).
|
|
24
|
+
const MAX_LEN = 10_000;
|
|
25
|
+
// git global options that consume a SEPARATE following token. Parity with the existing
|
|
26
|
+
// matchers' `(?:-[cC]\s+\S+\s+)*` sub-pattern (precedent: execute-gate/skill.yaml:27) and
|
|
27
|
+
// git(1)'s `git [<options>] <command>` grammar. The full version-dependent separate-value
|
|
28
|
+
// global set (--git-dir <p>, --work-tree <p>, …) is DELIBERATELY not enumerated: an
|
|
29
|
+
// un-handled one yields only a rare false-NEGATIVE (its value mis-read as the subcommand),
|
|
30
|
+
// backstopped by the owned git hook for the phase gates — see the module header + §4.2.
|
|
31
|
+
const GIT_VALUE_GLOBALS = new Set(['-C', '-c']);
|
|
32
|
+
/**
|
|
33
|
+
* Tokenize a shell command into segments (argv arrays), splitting on UNQUOTED control
|
|
34
|
+
* operators (`&& || | ; & newline`) and UNQUOTED whitespace, stripping quotes. Single
|
|
35
|
+
* quotes are literal; double quotes honor `\` escapes for `" \ $ ` (backtick); an unquoted
|
|
36
|
+
* `\` escapes the next char. Returns `[]` for non-string / empty / over-long input.
|
|
37
|
+
*/
|
|
38
|
+
export function tokenizeShell(command) {
|
|
39
|
+
if (typeof command !== 'string' || command.length === 0 || command.length > MAX_LEN) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
const segments = [];
|
|
43
|
+
let argv = [];
|
|
44
|
+
let word = '';
|
|
45
|
+
let hasWord = false;
|
|
46
|
+
let i = 0;
|
|
47
|
+
let quote = null;
|
|
48
|
+
const n = command.length;
|
|
49
|
+
const endWord = () => {
|
|
50
|
+
if (hasWord) {
|
|
51
|
+
argv.push(word);
|
|
52
|
+
word = '';
|
|
53
|
+
hasWord = false;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const endSeg = () => {
|
|
57
|
+
endWord();
|
|
58
|
+
if (argv.length > 0) {
|
|
59
|
+
segments.push(argv);
|
|
60
|
+
argv = [];
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
while (i < n) {
|
|
64
|
+
const ch = command[i];
|
|
65
|
+
if (quote === "'") {
|
|
66
|
+
if (ch === "'")
|
|
67
|
+
quote = null;
|
|
68
|
+
else {
|
|
69
|
+
word += ch;
|
|
70
|
+
hasWord = true;
|
|
71
|
+
}
|
|
72
|
+
i++;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (quote === '"') {
|
|
76
|
+
if (ch === '"') {
|
|
77
|
+
quote = null;
|
|
78
|
+
i++;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (ch === '\\' && i + 1 < n && '"\\$`'.includes(command[i + 1])) {
|
|
82
|
+
word += command[i + 1];
|
|
83
|
+
hasWord = true;
|
|
84
|
+
i += 2;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
word += ch;
|
|
88
|
+
hasWord = true;
|
|
89
|
+
i++;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// unquoted
|
|
93
|
+
if (ch === "'" || ch === '"') {
|
|
94
|
+
quote = ch;
|
|
95
|
+
hasWord = true; // an empty quoted string is still a (empty) word
|
|
96
|
+
i++;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (ch === '\\' && i + 1 < n) {
|
|
100
|
+
word += command[i + 1];
|
|
101
|
+
hasWord = true;
|
|
102
|
+
i += 2;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (ch === '&' && command[i + 1] === '&') {
|
|
106
|
+
endSeg();
|
|
107
|
+
i += 2;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (ch === '|' && command[i + 1] === '|') {
|
|
111
|
+
endSeg();
|
|
112
|
+
i += 2;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (ch === ';' || ch === '|' || ch === '&' || ch === '\n') {
|
|
116
|
+
endSeg();
|
|
117
|
+
i++;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (ch === ' ' || ch === '\t' || ch === '\r') {
|
|
121
|
+
endWord();
|
|
122
|
+
i++;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
word += ch;
|
|
126
|
+
hasWord = true;
|
|
127
|
+
i++;
|
|
128
|
+
}
|
|
129
|
+
endSeg();
|
|
130
|
+
return segments;
|
|
131
|
+
}
|
|
132
|
+
/** Basename of a program token (`/usr/bin/git` → `git`). */
|
|
133
|
+
function basename(p) {
|
|
134
|
+
const slash = p.lastIndexOf('/');
|
|
135
|
+
return slash === -1 ? p : p.slice(slash + 1);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Is `flag` present in an invocation's args? Long `--f` = exact or `--f=…`; short `-x` =
|
|
139
|
+
* exact or inside a pure short-flag cluster `-axb` (NOT a value-glued token). A literal
|
|
140
|
+
* (neither `--` nor a 2-char `-x`) matches only exactly.
|
|
141
|
+
*/
|
|
142
|
+
function flagPresent(args, flag) {
|
|
143
|
+
const isShort = flag.length === 2 && flag.startsWith('-') && /[A-Za-z]/.test(flag[1]);
|
|
144
|
+
for (const a of args) {
|
|
145
|
+
if (flag.startsWith('--')) {
|
|
146
|
+
if (a === flag || a.startsWith(flag + '='))
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
else if (isShort) {
|
|
150
|
+
if (a === flag || (/^-[A-Za-z]+$/.test(a) && a.includes(flag[1])))
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
else if (a === flag) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* True iff some real shell segment invokes `program` (basename match) AND — if `subcommand`
|
|
161
|
+
* is given — its first positional (after skipping git global options and `-C`/`-c` values)
|
|
162
|
+
* equals it AND — if `flagAny` is given — at least one listed flag is present in that
|
|
163
|
+
* invocation's args.
|
|
164
|
+
*/
|
|
165
|
+
export function commandInvokes(command, q) {
|
|
166
|
+
for (const argv of tokenizeShell(command)) {
|
|
167
|
+
if (argv.length === 0 || basename(argv[0]) !== q.program)
|
|
168
|
+
continue;
|
|
169
|
+
if (q.subcommand === undefined)
|
|
170
|
+
return true;
|
|
171
|
+
// Resolve the subcommand: skip leading global options (and -C/-c separate values).
|
|
172
|
+
let j = 1;
|
|
173
|
+
while (j < argv.length && argv[j].startsWith('-')) {
|
|
174
|
+
j += GIT_VALUE_GLOBALS.has(argv[j]) ? 2 : 1;
|
|
175
|
+
}
|
|
176
|
+
if (j >= argv.length || argv[j] !== q.subcommand)
|
|
177
|
+
continue;
|
|
178
|
+
if (q.flagAny === undefined)
|
|
179
|
+
return true;
|
|
180
|
+
if (q.flagAny.some((f) => flagPresent(argv.slice(j + 1), f)))
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=shell_parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell_parse.js","sourceRoot":"","sources":["../../src/functions/shell_parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `staged_docs_only` primitive — true iff the commit's STAGED diff is docs-only (non-code),
|
|
3
|
+
* by the same `isDocsOnly` predicate the hard EXECUTE gate uses (predicate parity).
|
|
4
|
+
*
|
|
5
|
+
* Lets the in-session `phase-logged-before-commit` nudge MIRROR the git-owned boundary
|
|
6
|
+
* (gate.ts allows docs-only commits): without this the nudge over-blocks a zero-phase
|
|
7
|
+
* `docs/` commit the hard gate would pass.
|
|
8
|
+
*
|
|
9
|
+
* Uses FIXED-argv git (`execFile('git', ['diff','--cached','--name-only'])`) — no shell, no
|
|
10
|
+
* user-controlled tokens, so it is categorically unlike `shell_exec`'s ARBITRARY command
|
|
11
|
+
* string and does not reopen the shell_exec/AUTO.5 capability decision. Same mechanism
|
|
12
|
+
* gate.ts (gate.ts:78) and handoff/collect.ts (:166) already ship.
|
|
13
|
+
*
|
|
14
|
+
* Fails TOWARD `false` (= not docs-only = the nudge STILL fires) on any error / non-tool_call
|
|
15
|
+
* event / absent cwd: the advisory layer must never falsely SUPPRESS a real code-commit warning.
|
|
16
|
+
*
|
|
17
|
+
* Imports from: node:child_process, node:util, zod, ../runtime/result.js,
|
|
18
|
+
* ../runtime/protected_paths.js, ./registry.js.
|
|
19
|
+
* Imported by: src/functions/index.ts (registry wiring via bootstrap).
|
|
20
|
+
*/
|
|
21
|
+
import type { FunctionRegistry } from './registry.js';
|
|
22
|
+
export declare function registerStagedDocsOnlyFunction(registry: FunctionRegistry): void;
|
|
23
|
+
//# sourceMappingURL=staged_docs_only.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged_docs_only.d.ts","sourceRoot":"","sources":["../../src/functions/staged_docs_only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAyB/E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `staged_docs_only` primitive — true iff the commit's STAGED diff is docs-only (non-code),
|
|
3
|
+
* by the same `isDocsOnly` predicate the hard EXECUTE gate uses (predicate parity).
|
|
4
|
+
*
|
|
5
|
+
* Lets the in-session `phase-logged-before-commit` nudge MIRROR the git-owned boundary
|
|
6
|
+
* (gate.ts allows docs-only commits): without this the nudge over-blocks a zero-phase
|
|
7
|
+
* `docs/` commit the hard gate would pass.
|
|
8
|
+
*
|
|
9
|
+
* Uses FIXED-argv git (`execFile('git', ['diff','--cached','--name-only'])`) — no shell, no
|
|
10
|
+
* user-controlled tokens, so it is categorically unlike `shell_exec`'s ARBITRARY command
|
|
11
|
+
* string and does not reopen the shell_exec/AUTO.5 capability decision. Same mechanism
|
|
12
|
+
* gate.ts (gate.ts:78) and handoff/collect.ts (:166) already ship.
|
|
13
|
+
*
|
|
14
|
+
* Fails TOWARD `false` (= not docs-only = the nudge STILL fires) on any error / non-tool_call
|
|
15
|
+
* event / absent cwd: the advisory layer must never falsely SUPPRESS a real code-commit warning.
|
|
16
|
+
*
|
|
17
|
+
* Imports from: node:child_process, node:util, zod, ../runtime/result.js,
|
|
18
|
+
* ../runtime/protected_paths.js, ./registry.js.
|
|
19
|
+
* Imported by: src/functions/index.ts (registry wiring via bootstrap).
|
|
20
|
+
*/
|
|
21
|
+
import { execFile } from 'node:child_process';
|
|
22
|
+
import { promisify } from 'node:util';
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
import { ok } from '../runtime/result.js';
|
|
25
|
+
import { isDocsOnly } from '../runtime/protected_paths.js';
|
|
26
|
+
const execFileP = promisify(execFile);
|
|
27
|
+
const EmptyArgs = z.object({}).strict();
|
|
28
|
+
export function registerStagedDocsOnlyFunction(registry) {
|
|
29
|
+
registry.register({
|
|
30
|
+
name: 'staged_docs_only',
|
|
31
|
+
argSchema: EmptyArgs,
|
|
32
|
+
durable: false,
|
|
33
|
+
// NOT memoizable: output depends on git/filesystem state outside the args.
|
|
34
|
+
memoizable: false,
|
|
35
|
+
costEstimateMs: 20,
|
|
36
|
+
execute: async (_args, ctx) => {
|
|
37
|
+
if (ctx.event.kind !== 'tool_call')
|
|
38
|
+
return ok(false);
|
|
39
|
+
const cwd = ctx.event.cwd;
|
|
40
|
+
if (cwd === undefined || cwd === '')
|
|
41
|
+
return ok(false);
|
|
42
|
+
try {
|
|
43
|
+
const { stdout } = await execFileP('git', ['diff', '--cached', '--name-only'], { cwd });
|
|
44
|
+
const files = stdout
|
|
45
|
+
.split('\n')
|
|
46
|
+
.map((l) => l.trim())
|
|
47
|
+
.filter(Boolean);
|
|
48
|
+
return ok(isDocsOnly(files));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// git error / not a repo / detached → cannot prove docs-only → let the nudge fire.
|
|
52
|
+
return ok(false);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=staged_docs_only.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staged_docs_only.js","sourceRoot":"","sources":["../../src/functions/staged_docs_only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAExC,MAAM,UAAU,8BAA8B,CAAC,QAA0B;IACvE,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK;QACd,2EAA2E;QAC3E,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,EAAE;QAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxF,MAAM,KAAK,GAAG,MAAM;qBACjB,KAAK,CAAC,IAAI,CAAC;qBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,mFAAmF;gBACnF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -60,7 +60,8 @@ import { handleReadState } from './tools/read-state.js';
|
|
|
60
60
|
import { handleReadViolations } from './tools/read-violations.js';
|
|
61
61
|
import { handleRecall } from './tools/recall.js';
|
|
62
62
|
import { handleStoreLesson, StoreLessonSchema, } from './tools/store-lesson.js';
|
|
63
|
-
import { WgAddEdgeSchema, WgCreateSchema, WgIdSchema, WgListSchema, WgReadySchema, WgUpdateSchema, handleWgAddEdge, handleWgCreate, handleWgEvents, handleWgGet, handleWgList, handleWgReady, handleWgUpdate, } from './tools/workgraph.js';
|
|
63
|
+
import { WgAddEdgeSchema, WgClaimSchema, WgCreateSchema, WgIdSchema, WgListSchema, WgReadySchema, WgUpdateSchema, handleWgAddEdge, handleWgClaim, handleWgCreate, handleWgEvents, handleWgGet, handleWgList, handleWgReady, handleWgUpdate, } from './tools/workgraph.js';
|
|
64
|
+
import { DecisionClassifySchema, handleDecisionClassify } from './tools/ralph.js';
|
|
64
65
|
/**
|
|
65
66
|
* Lazy wedge lesson-store singleton (retire-Rust RES-3c — store_lesson no longer
|
|
66
67
|
* touches the Rust engine). Constructed + `init()`ed once per MCP-server process;
|
|
@@ -182,6 +183,14 @@ const ToolHandlers = {
|
|
|
182
183
|
schema: WgIdSchema,
|
|
183
184
|
handle: async (a) => handleWgEvents(a, await getWorkGraph()),
|
|
184
185
|
},
|
|
186
|
+
workgraph_claim: {
|
|
187
|
+
schema: WgClaimSchema,
|
|
188
|
+
handle: async (a) => handleWgClaim(a, await getWorkGraph()),
|
|
189
|
+
},
|
|
190
|
+
decision_classify: {
|
|
191
|
+
schema: DecisionClassifySchema,
|
|
192
|
+
handle: (a) => Promise.resolve(handleDecisionClassify(a)),
|
|
193
|
+
},
|
|
185
194
|
};
|
|
186
195
|
// T-MCP-TOOL-ANNOTATIONS: honest MCP behavior hints, emitted in tools/list so
|
|
187
196
|
// annotation-aware hosts (codex's requires_mcp_tool_approval is the verified
|
|
@@ -215,6 +224,8 @@ const toolAnnotations = {
|
|
|
215
224
|
workgraph_create_issue: LOCAL_WRITE,
|
|
216
225
|
workgraph_update_issue: LOCAL_WRITE,
|
|
217
226
|
workgraph_add_edge: LOCAL_WRITE,
|
|
227
|
+
workgraph_claim: LOCAL_WRITE,
|
|
228
|
+
decision_classify: READ_ONLY,
|
|
218
229
|
// The one genuinely destructive tool: deletes a memory (tools/forget.ts).
|
|
219
230
|
forget: { readOnlyHint: false, destructiveHint: true, openWorldHint: false },
|
|
220
231
|
};
|
|
@@ -241,6 +252,8 @@ const descriptions = {
|
|
|
241
252
|
workgraph_get: 'Get one work-graph issue by id (or null).',
|
|
242
253
|
workgraph_list: 'List work-graph issues, optionally filtered by status {status?}.',
|
|
243
254
|
workgraph_events: 'List the append-only op-log (history) for an issue by id.',
|
|
255
|
+
workgraph_claim: 'Atomically claim a work-graph issue {id, ttlSec?} for exclusive work (exactly-once). Stamps the calling harness as audience. Returns {won, expiresAt}; won:false means another runner holds it. An expired claim is reclaimable.',
|
|
256
|
+
decision_classify: 'Classify an in-lap decision {decision} as DECIDE / ESCALATE / DEFER (gated-ralph, deterministic-first). DECIDE = settle by principles and proceed; ESCALATE = irreversible/outward boundary or genuine fork (emit HUMAN_REQUIRED, stamping this verdict in the payload); DEFER = no signal, the agent decides (Inv 3 → DECIDE). Returns {verdict, confidence, source, matched}.',
|
|
244
257
|
};
|
|
245
258
|
/**
|
|
246
259
|
* Read the published package version at runtime. T.1.H fix: the prior
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GR.4 — the lap-side decision classifier MCP tool (`decision_classify`).
|
|
3
|
+
*
|
|
4
|
+
* Exposes GR.2's deterministic `classifyDecision` to the in-lap `claude -p` agent so it can consult the
|
|
5
|
+
* cheap DECIDE-vs-ESCALATE heuristic mid-execution (the single-home for the classifier: it runs LAP-SIDE,
|
|
6
|
+
* never in the orchestrator). READ-only — pure function, no state mutation. The lap stamps the returned
|
|
7
|
+
* verdict into its `HUMAN_REQUIRED` payload on an ESCALATE so the escalation carries the heuristic verdict
|
|
8
|
+
* (the input the post-hoc `recordMisclassification` override path compares against).
|
|
9
|
+
*
|
|
10
|
+
* Imports from: zod, ../../runtime/ralph/decision_classifier.js.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
export declare const DecisionClassifySchema: z.ZodObject<{
|
|
14
|
+
decision: z.ZodString;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
decision: string;
|
|
17
|
+
}, {
|
|
18
|
+
decision: string;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const handleDecisionClassify: (a: z.infer<typeof DecisionClassifySchema>) => string;
|
|
21
|
+
//# sourceMappingURL=ralph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ralph.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/ralph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,eAAO,MAAM,sBAAsB,GAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,KAAG,MACrC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GR.4 — the lap-side decision classifier MCP tool (`decision_classify`).
|
|
3
|
+
*
|
|
4
|
+
* Exposes GR.2's deterministic `classifyDecision` to the in-lap `claude -p` agent so it can consult the
|
|
5
|
+
* cheap DECIDE-vs-ESCALATE heuristic mid-execution (the single-home for the classifier: it runs LAP-SIDE,
|
|
6
|
+
* never in the orchestrator). READ-only — pure function, no state mutation. The lap stamps the returned
|
|
7
|
+
* verdict into its `HUMAN_REQUIRED` payload on an ESCALATE so the escalation carries the heuristic verdict
|
|
8
|
+
* (the input the post-hoc `recordMisclassification` override path compares against).
|
|
9
|
+
*
|
|
10
|
+
* Imports from: zod, ../../runtime/ralph/decision_classifier.js.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { classifyDecision } from '../../runtime/ralph/decision_classifier.js';
|
|
14
|
+
export const DecisionClassifySchema = z.object({
|
|
15
|
+
decision: z.string().min(1),
|
|
16
|
+
});
|
|
17
|
+
export const handleDecisionClassify = (a) => JSON.stringify(classifyDecision(a.decision));
|
|
18
|
+
//# sourceMappingURL=ralph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../../src/mcp/tools/ralph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAyC,EAAU,EAAE,CAC1F,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
|
@@ -64,6 +64,16 @@ export declare const WgListSchema: z.ZodObject<{
|
|
|
64
64
|
status?: "closed" | "in_progress" | "open" | undefined;
|
|
65
65
|
}>;
|
|
66
66
|
export declare const WgReadySchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
67
|
+
export declare const WgClaimSchema: z.ZodObject<{
|
|
68
|
+
id: z.ZodString;
|
|
69
|
+
ttlSec: z.ZodDefault<z.ZodNumber>;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
id: string;
|
|
72
|
+
ttlSec: number;
|
|
73
|
+
}, {
|
|
74
|
+
id: string;
|
|
75
|
+
ttlSec?: number | undefined;
|
|
76
|
+
}>;
|
|
67
77
|
export declare const handleWgCreate: (a: z.infer<typeof WgCreateSchema>, s: WorkGraphStore) => Promise<string>;
|
|
68
78
|
export declare const handleWgUpdate: (a: z.infer<typeof WgUpdateSchema>, s: WorkGraphStore) => Promise<string>;
|
|
69
79
|
export declare const handleWgAddEdge: (a: z.infer<typeof WgAddEdgeSchema>, s: WorkGraphStore) => Promise<string>;
|
|
@@ -71,4 +81,5 @@ export declare const handleWgReady: (_a: z.infer<typeof WgReadySchema>, s: WorkG
|
|
|
71
81
|
export declare const handleWgGet: (a: z.infer<typeof WgIdSchema>, s: WorkGraphStore) => Promise<string>;
|
|
72
82
|
export declare const handleWgList: (a: z.infer<typeof WgListSchema>, s: WorkGraphStore) => Promise<string>;
|
|
73
83
|
export declare const handleWgEvents: (a: z.infer<typeof WgIdSchema>, s: WorkGraphStore) => Promise<string>;
|
|
84
|
+
export declare const handleWgClaim: (a: z.infer<typeof WgClaimSchema>, s: WorkGraphStore) => Promise<string>;
|
|
74
85
|
//# sourceMappingURL=workgraph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workgraph.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workgraph.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,eAAO,MAAM,cAAc;;;;;;;;;EAAsE,CAAC;AAClG,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AACH,eAAO,MAAM,UAAU;;;;;;EAAsC,CAAC;AAC9D,eAAO,MAAM,YAAY;;;;;;EAA0C,CAAC;AACpE,eAAO,MAAM,aAAa,gDAAe,CAAC;AAC1C,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,eAAO,MAAM,cAAc,GACzB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,EACjC,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAGd,CAAC;AAEJ,eAAO,MAAM,cAAc,GACzB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,EACjC,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAOd,CAAC;AAEJ,eAAO,MAAM,eAAe,GAC1B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,EAClC,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAGhB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,EACjC,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAAwC,CAAC;AAE1D,eAAO,MAAM,WAAW,GACtB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,EAC7B,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAA2C,CAAC;AAE7D,eAAO,MAAM,YAAY,GACvB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,EAC/B,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAC8E,CAAC;AAEhG,eAAO,MAAM,cAAc,GACzB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,EAC7B,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAA6C,CAAC;AAG/D,eAAO,MAAM,aAAa,GACxB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,EAChC,GAAG,cAAc,KAChB,OAAO,CAAC,MAAM,CAAwE,CAAC"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Imported by: src/mcp/server.ts (the ToolHandlers map).
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
|
+
import { claimAudience } from '../../workgraph/audience.js';
|
|
12
13
|
const Status = z.enum(['open', 'in_progress', 'closed']);
|
|
13
14
|
const EdgeT = z.enum(['blocks', 'parent-child', 'discovered-from', 'related']);
|
|
14
15
|
export const WgCreateSchema = z.object({ title: z.string().min(1), body: z.string().optional() });
|
|
@@ -26,6 +27,10 @@ export const WgAddEdgeSchema = z.object({
|
|
|
26
27
|
export const WgIdSchema = z.object({ id: z.string().min(1) });
|
|
27
28
|
export const WgListSchema = z.object({ status: Status.optional() });
|
|
28
29
|
export const WgReadySchema = z.object({});
|
|
30
|
+
export const WgClaimSchema = z.object({
|
|
31
|
+
id: z.string().min(1),
|
|
32
|
+
ttlSec: z.number().int().positive().default(1800),
|
|
33
|
+
});
|
|
29
34
|
export const handleWgCreate = async (a, s) => JSON.stringify(await s.createIssue({ title: a.title, ...(a.body === undefined ? {} : { body: a.body }) }));
|
|
30
35
|
export const handleWgUpdate = async (a, s) => JSON.stringify(await s.updateIssue(a.id, {
|
|
31
36
|
...(a.status === undefined ? {} : { status: a.status }),
|
|
@@ -40,4 +45,6 @@ export const handleWgReady = async (_a, s) => JSON.stringify(await s.listReady()
|
|
|
40
45
|
export const handleWgGet = async (a, s) => JSON.stringify(await s.getIssue(a.id));
|
|
41
46
|
export const handleWgList = async (a, s) => JSON.stringify(await s.listIssues(a.status === undefined ? undefined : { status: a.status }));
|
|
42
47
|
export const handleWgEvents = async (a, s) => JSON.stringify(await s.listEvents(a.id));
|
|
48
|
+
// GR.1 — atomic claim. Audience is stamped from the trusted env markers, NEVER from caller args.
|
|
49
|
+
export const handleWgClaim = async (a, s) => JSON.stringify(await s.claimIssue(a.id, claimAudience(), a.ttlSec));
|
|
43
50
|
//# sourceMappingURL=workgraph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workgraph.js","sourceRoot":"","sources":["../../../src/mcp/tools/workgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workgraph.js","sourceRoot":"","sources":["../../../src/mcp/tools/workgraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend_factory.d.ts","sourceRoot":"","sources":["../../src/rag/backend_factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IAKE,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IAIE,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAyB/D;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"backend_factory.d.ts","sourceRoot":"","sources":["../../src/rag/backend_factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IAKE,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IAIE,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAyB/D;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CA8DrF"}
|
|
@@ -120,6 +120,10 @@ export function libsqlQwen3WithLexicalFallback(opts) {
|
|
|
120
120
|
async deleteLesson(id, opts) {
|
|
121
121
|
return active.deleteLesson(id, opts);
|
|
122
122
|
},
|
|
123
|
+
// wg-9e4f4eb2a40f: delegate demote to the active backend (no-op if it doesn't implement it).
|
|
124
|
+
async demoteLesson(id) {
|
|
125
|
+
return active.demoteLesson?.(id);
|
|
126
|
+
},
|
|
123
127
|
};
|
|
124
128
|
}
|
|
125
129
|
//# sourceMappingURL=backend_factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend_factory.js","sourceRoot":"","sources":["../../src/rag/backend_factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backend_factory.js","sourceRoot":"","sources":["../../src/rag/backend_factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libsql_lexical.d.ts","sourceRoot":"","sources":["../../../src/rag/backends/libsql_lexical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,KAAK,EAAoC,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"libsql_lexical.d.ts","sourceRoot":"","sources":["../../../src/rag/backends/libsql_lexical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,KAAK,EAAoC,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAyHxE"}
|
|
@@ -44,13 +44,15 @@ export function libsqlLexicalBackend(opts) {
|
|
|
44
44
|
author TEXT NOT NULL,
|
|
45
45
|
created_at TEXT NOT NULL,
|
|
46
46
|
tier TEXT NOT NULL DEFAULT 'shared',
|
|
47
|
-
namespace TEXT
|
|
47
|
+
namespace TEXT,
|
|
48
|
+
retired_at TEXT
|
|
48
49
|
);
|
|
49
50
|
`);
|
|
50
51
|
// Additive scope columns for a pre-existing (qwen3-initialized) table. Idempotent.
|
|
51
52
|
for (const ddl of [
|
|
52
53
|
`ALTER TABLE lessons ADD COLUMN tier TEXT NOT NULL DEFAULT 'shared'`,
|
|
53
54
|
`ALTER TABLE lessons ADD COLUMN namespace TEXT`,
|
|
55
|
+
`ALTER TABLE lessons ADD COLUMN retired_at TEXT`,
|
|
54
56
|
]) {
|
|
55
57
|
try {
|
|
56
58
|
await client.execute(ddl);
|
|
@@ -76,9 +78,9 @@ export function libsqlLexicalBackend(opts) {
|
|
|
76
78
|
return [];
|
|
77
79
|
try {
|
|
78
80
|
const rs = await client.execute({
|
|
79
|
-
sql: `SELECT l.id, l.content, l.tags, l.source, l.author, l.created_at, l.tier, l.namespace
|
|
81
|
+
sql: `SELECT l.id, l.content, l.tags, l.source, l.author, l.created_at, l.tier, l.namespace, l.retired_at
|
|
80
82
|
FROM lessons_fts f JOIN lessons l ON l.id = f.id
|
|
81
|
-
WHERE lessons_fts MATCH ? AND (l.tier = 'shared' OR l.namespace = ?)
|
|
83
|
+
WHERE lessons_fts MATCH ? AND (l.tier = 'shared' OR l.namespace = ?) AND l.retired_at IS NULL
|
|
82
84
|
LIMIT ?`,
|
|
83
85
|
args: [safe, scope.namespace, k],
|
|
84
86
|
});
|
|
@@ -100,8 +102,8 @@ export function libsqlLexicalBackend(opts) {
|
|
|
100
102
|
throw new Error('libsql-lexical: not initialized');
|
|
101
103
|
const tagsJson = JSON.stringify(lesson.tags);
|
|
102
104
|
await client.execute({
|
|
103
|
-
sql: `INSERT INTO lessons (id, content, tags, source, author, created_at, tier, namespace)
|
|
104
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
105
|
+
sql: `INSERT INTO lessons (id, content, tags, source, author, created_at, tier, namespace, retired_at)
|
|
106
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
105
107
|
args: [
|
|
106
108
|
lesson.id,
|
|
107
109
|
lesson.content,
|
|
@@ -111,6 +113,7 @@ export function libsqlLexicalBackend(opts) {
|
|
|
111
113
|
lesson.createdAt,
|
|
112
114
|
(lesson.tier ?? 'shared'),
|
|
113
115
|
lesson.namespace ?? null,
|
|
116
|
+
lesson.retired_at ?? null,
|
|
114
117
|
],
|
|
115
118
|
});
|
|
116
119
|
// Mirror into FTS5 — separate statement, not a trigger, to stay
|
|
@@ -137,6 +140,16 @@ export function libsqlLexicalBackend(opts) {
|
|
|
137
140
|
await client.execute({ sql: `DELETE FROM lessons_fts WHERE id = ?`, args: [id] });
|
|
138
141
|
return { deleted: true, forced: isUser && force };
|
|
139
142
|
},
|
|
143
|
+
// wg-9e4f4eb2a40f: demote (retire) — DB-only here (this backend has no per-file source, so no
|
|
144
|
+
// rebuild concern). Leaves the row in `lessons`/`lessons_fts` (rollback floor), out of recall.
|
|
145
|
+
async demoteLesson(id) {
|
|
146
|
+
if (!client)
|
|
147
|
+
throw new Error('libsql-lexical: not initialized');
|
|
148
|
+
await client.execute({
|
|
149
|
+
sql: `UPDATE lessons SET retired_at = ? WHERE id = ?`,
|
|
150
|
+
args: [new Date().toISOString(), id],
|
|
151
|
+
});
|
|
152
|
+
},
|
|
140
153
|
};
|
|
141
154
|
}
|
|
142
155
|
// Strip the two FTS5 syntax tokens most likely to be in casual queries.
|
|
@@ -159,6 +172,9 @@ function rowToLesson(r) {
|
|
|
159
172
|
createdAt: s(r, 'created_at'),
|
|
160
173
|
tier: s(r, 'tier') === 'project' ? 'project' : 'shared',
|
|
161
174
|
namespace: typeof r.namespace === 'string' ? r.namespace : null,
|
|
175
|
+
...(typeof r.retired_at === 'string' && r.retired_at !== ''
|
|
176
|
+
? { retired_at: r.retired_at }
|
|
177
|
+
: {}),
|
|
162
178
|
};
|
|
163
179
|
}
|
|
164
180
|
//# sourceMappingURL=libsql_lexical.js.map
|