opensquid 0.5.447 → 0.5.449
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/functions/recall_pre_inject.d.ts.map +1 -1
- package/dist/functions/recall_pre_inject.js +12 -0
- package/dist/functions/recall_pre_inject.js.map +1 -1
- package/dist/rag/store_git.d.ts +23 -0
- package/dist/rag/store_git.d.ts.map +1 -0
- package/dist/rag/store_git.js +57 -0
- package/dist/rag/store_git.js.map +1 -0
- package/dist/runtime/hooks/session-end.js +11 -0
- package/dist/runtime/hooks/session-end.js.map +1 -1
- package/docs/pack-runtime.md +15 -12
- package/docs/skill-grammar-guide.md +4 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall_pre_inject.d.ts","sourceRoot":"","sources":["../../src/functions/recall_pre_inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAK7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"recall_pre_inject.d.ts","sourceRoot":"","sources":["../../src/functions/recall_pre_inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAK7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAoGtD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,UAAU,GAClB,IAAI,CAiEN"}
|
|
@@ -89,6 +89,15 @@ function selectHitsForInjection(hits, minScore, maxTokens) {
|
|
|
89
89
|
* the goal-bias gain since it's already the workflow gate's source of
|
|
90
90
|
* truth.
|
|
91
91
|
*/
|
|
92
|
+
// The harness control-message vocabulary (one home; extend ONLY as observed). A prompt that IS one
|
|
93
|
+
// of these is a harness event (a background task-notification), NOT user intent → recall is noise.
|
|
94
|
+
// Grounded: `<task-notification>` is the marker observed firing recall; a relevance floor can't
|
|
95
|
+
// catch it (its markup scores cosine 0.70–0.74, above genuine queries — wg-4f91e0b5cb8c).
|
|
96
|
+
const HARNESS_CONTROL_PREFIXES = ['<task-notification'];
|
|
97
|
+
function isHarnessControlMessage(prompt) {
|
|
98
|
+
const p = prompt.trimStart();
|
|
99
|
+
return HARNESS_CONTROL_PREFIXES.some((m) => p.startsWith(m));
|
|
100
|
+
}
|
|
92
101
|
async function composeRecallQuery(prompt, sessionId) {
|
|
93
102
|
try {
|
|
94
103
|
const active = await readActiveTask(sessionId);
|
|
@@ -151,6 +160,9 @@ export function registerRecallPreInjectFunction(registry, backend) {
|
|
|
151
160
|
// goal-token doesn't artificially satisfy a short-prompt skip.
|
|
152
161
|
if (rawPrompt.length < minPromptChars)
|
|
153
162
|
return ok(null);
|
|
163
|
+
// A harness control-message (a task-notification) is not user intent → recall is noise.
|
|
164
|
+
if (isHarnessControlMessage(rawPrompt))
|
|
165
|
+
return ok(null);
|
|
154
166
|
// T-CTX-LOOP CTX.3 — bias query toward the current goal when
|
|
155
167
|
// active-task is seeded. Falls back to raw prompt when no signal.
|
|
156
168
|
const query = await composeRecallQuery(rawPrompt, ctx.sessionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall_pre_inject.js","sourceRoot":"","sources":["../../src/functions/recall_pre_inject.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recall_pre_inject.js","sourceRoot":"","sources":["../../src/functions/recall_pre_inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-versioned memory store (GVM.1, wg-7f4df49787cb).
|
|
3
|
+
*
|
|
4
|
+
* `~/.opensquid/store/` holds the per-file TRUTH — `lessons/` (one `mem-*.md` per memory) and
|
|
5
|
+
* `issues/` (one `op-*.json` per work-graph op). The libSQL DB (`rag.sqlite`, a SIBLING of `store/`,
|
|
6
|
+
* not inside it) is the derived, rebuildable index. This module puts `store/` under git so its commit
|
|
7
|
+
* history IS the forensic archive + the rollback floor behind retention's hard-delete sweep
|
|
8
|
+
* (wg-9e4f4eb2a40f slice-3): a memory demoted (`retired_at`) this session is committed at session
|
|
9
|
+
* boundary BEFORE any future-session sweep can delete it, so its content is always recoverable.
|
|
10
|
+
*
|
|
11
|
+
* The store is git-versioned in place (mutable `mem-*.md`); git's commit history is the event log —
|
|
12
|
+
* memory is NOT re-architected to an append-only op-log. The repo is machine-local: no remote, never
|
|
13
|
+
* pushed, isolated from any project repo (`git -C <store>`), and a fixed opensquid identity so it
|
|
14
|
+
* works with no global git config and never touches the user's identity.
|
|
15
|
+
*
|
|
16
|
+
* Imports from: node:child_process, node:fs/promises, node:path, node:util, ../runtime/paths.js.
|
|
17
|
+
* Imported by: src/runtime/hooks/session-end.ts (the session-boundary snapshot).
|
|
18
|
+
*/
|
|
19
|
+
/** Commit the per-file memory+op store as a session-boundary snapshot. Inits the repo once; skips an
|
|
20
|
+
* empty commit. Fail-SOFT: never throws — a snapshot failure must never block session-end. Returns
|
|
21
|
+
* the short sha, or null (no store / no change / git failure). */
|
|
22
|
+
export declare function commitMemoryStore(label: string): Promise<string | null>;
|
|
23
|
+
//# sourceMappingURL=store_git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store_git.d.ts","sourceRoot":"","sources":["../../src/rag/store_git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH;;mEAEmE;AACnE,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB7E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-versioned memory store (GVM.1, wg-7f4df49787cb).
|
|
3
|
+
*
|
|
4
|
+
* `~/.opensquid/store/` holds the per-file TRUTH — `lessons/` (one `mem-*.md` per memory) and
|
|
5
|
+
* `issues/` (one `op-*.json` per work-graph op). The libSQL DB (`rag.sqlite`, a SIBLING of `store/`,
|
|
6
|
+
* not inside it) is the derived, rebuildable index. This module puts `store/` under git so its commit
|
|
7
|
+
* history IS the forensic archive + the rollback floor behind retention's hard-delete sweep
|
|
8
|
+
* (wg-9e4f4eb2a40f slice-3): a memory demoted (`retired_at`) this session is committed at session
|
|
9
|
+
* boundary BEFORE any future-session sweep can delete it, so its content is always recoverable.
|
|
10
|
+
*
|
|
11
|
+
* The store is git-versioned in place (mutable `mem-*.md`); git's commit history is the event log —
|
|
12
|
+
* memory is NOT re-architected to an append-only op-log. The repo is machine-local: no remote, never
|
|
13
|
+
* pushed, isolated from any project repo (`git -C <store>`), and a fixed opensquid identity so it
|
|
14
|
+
* works with no global git config and never touches the user's identity.
|
|
15
|
+
*
|
|
16
|
+
* Imports from: node:child_process, node:fs/promises, node:path, node:util, ../runtime/paths.js.
|
|
17
|
+
* Imported by: src/runtime/hooks/session-end.ts (the session-boundary snapshot).
|
|
18
|
+
*/
|
|
19
|
+
import { execFile } from 'node:child_process';
|
|
20
|
+
import { stat } from 'node:fs/promises';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { promisify } from 'node:util';
|
|
23
|
+
import { OPENSQUID_HOME } from '../runtime/paths.js';
|
|
24
|
+
const execFileP = promisify(execFile);
|
|
25
|
+
const IDENT = ['-c', 'user.name=opensquid', '-c', 'user.email=memory@opensquid.local'];
|
|
26
|
+
/** Commit the per-file memory+op store as a session-boundary snapshot. Inits the repo once; skips an
|
|
27
|
+
* empty commit. Fail-SOFT: never throws — a snapshot failure must never block session-end. Returns
|
|
28
|
+
* the short sha, or null (no store / no change / git failure). */
|
|
29
|
+
export async function commitMemoryStore(label) {
|
|
30
|
+
const dir = join(OPENSQUID_HOME(), 'store');
|
|
31
|
+
try {
|
|
32
|
+
await stat(dir);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null; // no store yet → nothing to version
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
try {
|
|
39
|
+
await execFileP('git', ['-C', dir, 'rev-parse', '--is-inside-work-tree']);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
await execFileP('git', ['-C', dir, 'init', '-q']);
|
|
43
|
+
}
|
|
44
|
+
await execFileP('git', ['-C', dir, 'add', '-A']);
|
|
45
|
+
const { stdout } = await execFileP('git', ['-C', dir, 'status', '--porcelain']);
|
|
46
|
+
if (stdout.trim() === '')
|
|
47
|
+
return null; // nothing changed → no empty commit
|
|
48
|
+
await execFileP('git', ['-C', dir, ...IDENT, 'commit', '-q', '--no-verify', '-m', label]);
|
|
49
|
+
const { stdout: sha } = await execFileP('git', ['-C', dir, 'rev-parse', '--short', 'HEAD']);
|
|
50
|
+
return sha.trim();
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
process.stderr.write(`opensquid: memory-store snapshot skipped — ${String(e)}\n`);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=store_git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store_git.js","sourceRoot":"","sources":["../../src/rag/store_git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,mCAAmC,CAAC,CAAC;AAEvF;;mEAEmE;AACnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,oCAAoC;IACnD,CAAC;IACD,IAAI,CAAC;QACH,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,oCAAoC;QAC3E,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -22,6 +22,7 @@ import { exitIfSubagent } from './subagent_guard.js';
|
|
|
22
22
|
import { clearFsmState } from '../fsm_state.js';
|
|
23
23
|
import { runCompression } from '../compression_orchestrator.js';
|
|
24
24
|
import { makeConsolidateRunner } from '../wedge/compression_deps.js';
|
|
25
|
+
import { commitMemoryStore } from '../../rag/store_git.js';
|
|
25
26
|
import { emitProbe, groupFromTask } from '../satisfaction_probe.js';
|
|
26
27
|
import { archiveActiveTask, readActiveTask } from '../session_state.js';
|
|
27
28
|
import { Event } from '../types.js';
|
|
@@ -112,6 +113,16 @@ async function main() {
|
|
|
112
113
|
catch (e) {
|
|
113
114
|
process.stderr.write(`opensquid: compression skipped — ${String(e)}\n`);
|
|
114
115
|
}
|
|
116
|
+
// GVM.1 (wg-7f4df49787cb) — snapshot the per-file memory+op store to git AFTER compression, so the
|
|
117
|
+
// forensic archive + retention rollback floor captures this session's writes + retired_at demotes.
|
|
118
|
+
try {
|
|
119
|
+
const sha = await commitMemoryStore(`memory snapshot: session ${sessionId.slice(0, 8)}`);
|
|
120
|
+
if (sha !== null)
|
|
121
|
+
process.stderr.write(`opensquid: memory-store snapshot ${sha}\n`);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
/* fail-soft: a snapshot failure must never block session-end */
|
|
125
|
+
}
|
|
115
126
|
// T-AUTO-HANDOFF — the SessionEnd BACKUP writer. MUST run BEFORE
|
|
116
127
|
// archiveActiveTask/clearFsmState below: those destroy the exact state the
|
|
117
128
|
// deterministic dump reads (active-task signal + FSM file). Best-effort —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-end.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-end.ts"],"names":[],"mappings":"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"}
|
package/docs/pack-runtime.md
CHANGED
|
@@ -631,12 +631,14 @@ rules:
|
|
|
631
631
|
kind: track_check
|
|
632
632
|
requires: [] # rule-local preconditions (peer to Skill.requires)
|
|
633
633
|
process:
|
|
634
|
-
- call:
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
634
|
+
- call: command_invokes # structural — a real `git commit --amend`, not a regex on the string
|
|
635
|
+
args:
|
|
636
|
+
program: git
|
|
637
|
+
subcommand: commit
|
|
638
|
+
flag_any: ['--amend']
|
|
639
|
+
as: amending
|
|
638
640
|
- call: verdict
|
|
639
|
-
if: '
|
|
641
|
+
if: 'amending'
|
|
640
642
|
args:
|
|
641
643
|
level: warn
|
|
642
644
|
message: 'avoid git commit --amend in shared branches'
|
|
@@ -926,13 +928,14 @@ shipped primitive by category.
|
|
|
926
928
|
|
|
927
929
|
### 5.1 Event inspection (`src/functions/event.ts`)
|
|
928
930
|
|
|
929
|
-
| Primitive | Returns | Use
|
|
930
|
-
| ------------------------ | ----------------------------- |
|
|
931
|
-
| `tool_name` | `{value: string}` | The tool being called (`Bash`, `Write`, etc.)
|
|
932
|
-
| `tool_args` | object | The tool's parsed args
|
|
933
|
-
| `cwd` | `{value: string}` | Current working directory
|
|
934
|
-
| `last_assistant_message` | `{value: string}` | Most recent assistant output
|
|
935
|
-
| `
|
|
931
|
+
| Primitive | Returns | Use |
|
|
932
|
+
| ------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
933
|
+
| `tool_name` | `{value: string}` | The tool being called (`Bash`, `Write`, etc.) |
|
|
934
|
+
| `tool_args` | object | The tool's parsed args |
|
|
935
|
+
| `cwd` | `{value: string}` | Current working directory |
|
|
936
|
+
| `last_assistant_message` | `{value: string}` | Most recent assistant output |
|
|
937
|
+
| `command_invokes` | `bool` | **STRUCTURAL** match of a real shell command invocation — args `{program, subcommand?, flag_any?, arg_any?}`. Parses the command into shell segments and matches a GENUINE invocation: `program` (basename), optional `subcommand`, `flag_any` (any listed flag present), `arg_any` (a non-flag positional whose refspec TARGET — `src:dst`→`dst`, `+`-stripped, basename — is in the list; conjunctive with `flag_any`). Ignores prose/`echo`/`grep` mentions; compounds (`cd … && git commit`) still match. **PREFER this for command gates.** (`shell_parse.ts`, `event.ts`) |
|
|
938
|
+
| `match_command` | `{matched: bool, groups?: …}` | Regex-match against the bash command string (`args.pattern`). EVADABLE — a quoted/echoed mention false-fires and boundary-anchoring is brittle. Reserve for LOOSE / non-command string matching; for git/npm-style **command gates use `command_invokes`** (the built-in git/version gates were migrated off this in GM.1–4; `command_boundary.skill.test` guards against reverting to regex). |
|
|
936
939
|
|
|
937
940
|
### 5.2 State + FSM (`src/functions/state.ts`, `fsm.ts`, `session_tool_history.ts`)
|
|
938
941
|
|
|
@@ -32,10 +32,10 @@ The built-in `workflow` skill ships this rule in
|
|
|
32
32
|
```yaml
|
|
33
33
|
- id: phase-logged-before-commit
|
|
34
34
|
process:
|
|
35
|
-
- call:
|
|
36
|
-
args:
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
- call: command_invokes # STRUCTURAL: matches a REAL `git commit` invocation
|
|
36
|
+
args: # (program+subcommand parsed from the shell), NOT a regex on
|
|
37
|
+
program: git # the command string — so `echo "git commit"` / a prose mention
|
|
38
|
+
subcommand: commit # never false-fires, while `cd … && git commit` still matches.
|
|
39
39
|
as: committing
|
|
40
40
|
- call: read_state
|
|
41
41
|
if: committing
|
package/package.json
CHANGED