agy-worker-mcp 0.3.1
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/CHANGELOG.md +141 -0
- package/LICENSE +21 -0
- package/README.md +309 -0
- package/commands/agy-ceiling.md +31 -0
- package/dist/broker/blockers.d.ts +86 -0
- package/dist/broker/blockers.d.ts.map +1 -0
- package/dist/broker/blockers.js +390 -0
- package/dist/broker/blockers.js.map +1 -0
- package/dist/broker/outcome.d.ts +85 -0
- package/dist/broker/outcome.d.ts.map +1 -0
- package/dist/broker/outcome.js +147 -0
- package/dist/broker/outcome.js.map +1 -0
- package/dist/broker/reconcile.d.ts +74 -0
- package/dist/broker/reconcile.d.ts.map +1 -0
- package/dist/broker/reconcile.js +415 -0
- package/dist/broker/reconcile.js.map +1 -0
- package/dist/broker/result.d.ts +88 -0
- package/dist/broker/result.d.ts.map +1 -0
- package/dist/broker/result.js +234 -0
- package/dist/broker/result.js.map +1 -0
- package/dist/broker/verify.d.ts +52 -0
- package/dist/broker/verify.d.ts.map +1 -0
- package/dist/broker/verify.js +174 -0
- package/dist/broker/verify.js.map +1 -0
- package/dist/contract/errors.d.ts +119 -0
- package/dist/contract/errors.d.ts.map +1 -0
- package/dist/contract/errors.js +99 -0
- package/dist/contract/errors.js.map +1 -0
- package/dist/contract/index.d.ts +10 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +10 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/paths.d.ts +139 -0
- package/dist/contract/paths.d.ts.map +1 -0
- package/dist/contract/paths.js +359 -0
- package/dist/contract/paths.js.map +1 -0
- package/dist/contract/schema.sql +64 -0
- package/dist/contract/types.d.ts +1113 -0
- package/dist/contract/types.d.ts.map +1 -0
- package/dist/contract/types.js +114 -0
- package/dist/contract/types.js.map +1 -0
- package/dist/events/cursor.d.ts +65 -0
- package/dist/events/cursor.d.ts.map +1 -0
- package/dist/events/cursor.js +286 -0
- package/dist/events/cursor.js.map +1 -0
- package/dist/events/detect.d.ts +58 -0
- package/dist/events/detect.d.ts.map +1 -0
- package/dist/events/detect.js +183 -0
- package/dist/events/detect.js.map +1 -0
- package/dist/events/normalize.d.ts +30 -0
- package/dist/events/normalize.d.ts.map +1 -0
- package/dist/events/normalize.js +158 -0
- package/dist/events/normalize.js.map +1 -0
- package/dist/events/parse.d.ts +41 -0
- package/dist/events/parse.d.ts.map +1 -0
- package/dist/events/parse.js +89 -0
- package/dist/events/parse.js.map +1 -0
- package/dist/gate/bind.d.ts +28 -0
- package/dist/gate/bind.d.ts.map +1 -0
- package/dist/gate/bind.js +154 -0
- package/dist/gate/bind.js.map +1 -0
- package/dist/gate/gate.d.ts +139 -0
- package/dist/gate/gate.d.ts.map +1 -0
- package/dist/gate/gate.js +488 -0
- package/dist/gate/gate.js.map +1 -0
- package/dist/gate/hooks-file.d.ts +55 -0
- package/dist/gate/hooks-file.d.ts.map +1 -0
- package/dist/gate/hooks-file.js +104 -0
- package/dist/gate/hooks-file.js.map +1 -0
- package/dist/gate.d.ts +3 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +20 -0
- package/dist/gate.js.map +1 -0
- package/dist/policy/ceiling-review.d.ts +22 -0
- package/dist/policy/ceiling-review.d.ts.map +1 -0
- package/dist/policy/ceiling-review.js +170 -0
- package/dist/policy/ceiling-review.js.map +1 -0
- package/dist/policy/ceiling.d.ts +128 -0
- package/dist/policy/ceiling.d.ts.map +1 -0
- package/dist/policy/ceiling.js +273 -0
- package/dist/policy/ceiling.js.map +1 -0
- package/dist/policy/containment.d.ts +100 -0
- package/dist/policy/containment.d.ts.map +1 -0
- package/dist/policy/containment.js +1071 -0
- package/dist/policy/containment.js.map +1 -0
- package/dist/policy/hard-deny.d.ts +28 -0
- package/dist/policy/hard-deny.d.ts.map +1 -0
- package/dist/policy/hard-deny.js +78 -0
- package/dist/policy/hard-deny.js.map +1 -0
- package/dist/policy/profiles.d.ts +82 -0
- package/dist/policy/profiles.d.ts.map +1 -0
- package/dist/policy/profiles.js +317 -0
- package/dist/policy/profiles.js.map +1 -0
- package/dist/policy/rules.d.ts +138 -0
- package/dist/policy/rules.d.ts.map +1 -0
- package/dist/policy/rules.js +1180 -0
- package/dist/policy/rules.js.map +1 -0
- package/dist/policy/seatbelt.d.ts +32 -0
- package/dist/policy/seatbelt.d.ts.map +1 -0
- package/dist/policy/seatbelt.js +59 -0
- package/dist/policy/seatbelt.js.map +1 -0
- package/dist/policy/tools.d.ts +36 -0
- package/dist/policy/tools.d.ts.map +1 -0
- package/dist/policy/tools.js +94 -0
- package/dist/policy/tools.js.map +1 -0
- package/dist/runner/gate-watchdog.d.ts +93 -0
- package/dist/runner/gate-watchdog.d.ts.map +1 -0
- package/dist/runner/gate-watchdog.js +153 -0
- package/dist/runner/gate-watchdog.js.map +1 -0
- package/dist/runner/idle.d.ts +51 -0
- package/dist/runner/idle.d.ts.map +1 -0
- package/dist/runner/idle.js +81 -0
- package/dist/runner/idle.js.map +1 -0
- package/dist/runner/inbox.d.ts +56 -0
- package/dist/runner/inbox.d.ts.map +1 -0
- package/dist/runner/inbox.js +134 -0
- package/dist/runner/inbox.js.map +1 -0
- package/dist/runner/reap.d.ts +65 -0
- package/dist/runner/reap.d.ts.map +1 -0
- package/dist/runner/reap.js +168 -0
- package/dist/runner/reap.js.map +1 -0
- package/dist/runner/runner.d.ts +51 -0
- package/dist/runner/runner.d.ts.map +1 -0
- package/dist/runner/runner.js +289 -0
- package/dist/runner/runner.js.map +1 -0
- package/dist/runner/spawn.d.ts +98 -0
- package/dist/runner/spawn.d.ts.map +1 -0
- package/dist/runner/spawn.js +230 -0
- package/dist/runner/spawn.js.map +1 -0
- package/dist/runner/verify.d.ts +24 -0
- package/dist/runner/verify.d.ts.map +1 -0
- package/dist/runner/verify.js +108 -0
- package/dist/runner/verify.js.map +1 -0
- package/dist/runner.d.ts +3 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +15 -0
- package/dist/runner.js.map +1 -0
- package/dist/server/context.d.ts +41 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +59 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/instructions.d.ts +13 -0
- package/dist/server/instructions.d.ts.map +1 -0
- package/dist/server/instructions.js +121 -0
- package/dist/server/instructions.js.map +1 -0
- package/dist/server/server.d.ts +20 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +55 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/tools/cancel.d.ts +24 -0
- package/dist/server/tools/cancel.d.ts.map +1 -0
- package/dist/server/tools/cancel.js +59 -0
- package/dist/server/tools/cancel.js.map +1 -0
- package/dist/server/tools/capabilities.d.ts +36 -0
- package/dist/server/tools/capabilities.d.ts.map +1 -0
- package/dist/server/tools/capabilities.js +116 -0
- package/dist/server/tools/capabilities.js.map +1 -0
- package/dist/server/tools/ceiling.d.ts +31 -0
- package/dist/server/tools/ceiling.d.ts.map +1 -0
- package/dist/server/tools/ceiling.js +121 -0
- package/dist/server/tools/ceiling.js.map +1 -0
- package/dist/server/tools/index.d.ts +38 -0
- package/dist/server/tools/index.d.ts.map +1 -0
- package/dist/server/tools/index.js +115 -0
- package/dist/server/tools/index.js.map +1 -0
- package/dist/server/tools/listJobs.d.ts +30 -0
- package/dist/server/tools/listJobs.d.ts.map +1 -0
- package/dist/server/tools/listJobs.js +37 -0
- package/dist/server/tools/listJobs.js.map +1 -0
- package/dist/server/tools/logs.d.ts +31 -0
- package/dist/server/tools/logs.d.ts.map +1 -0
- package/dist/server/tools/logs.js +96 -0
- package/dist/server/tools/logs.js.map +1 -0
- package/dist/server/tools/result.d.ts +32 -0
- package/dist/server/tools/result.d.ts.map +1 -0
- package/dist/server/tools/result.js +95 -0
- package/dist/server/tools/result.js.map +1 -0
- package/dist/server/tools/send.d.ts +37 -0
- package/dist/server/tools/send.d.ts.map +1 -0
- package/dist/server/tools/send.js +71 -0
- package/dist/server/tools/send.js.map +1 -0
- package/dist/server/tools/sessions.d.ts +28 -0
- package/dist/server/tools/sessions.d.ts.map +1 -0
- package/dist/server/tools/sessions.js +54 -0
- package/dist/server/tools/sessions.js.map +1 -0
- package/dist/server/tools/start.d.ts +107 -0
- package/dist/server/tools/start.d.ts.map +1 -0
- package/dist/server/tools/start.js +482 -0
- package/dist/server/tools/start.js.map +1 -0
- package/dist/server/tools/wait.d.ts +29 -0
- package/dist/server/tools/wait.d.ts.map +1 -0
- package/dist/server/tools/wait.js +120 -0
- package/dist/server/tools/wait.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +17 -0
- package/dist/server.js.map +1 -0
- package/dist/setup/install.d.ts +52 -0
- package/dist/setup/install.d.ts.map +1 -0
- package/dist/setup/install.js +108 -0
- package/dist/setup/install.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +24 -0
- package/dist/setup.js.map +1 -0
- package/dist/store/db.d.ts +49 -0
- package/dist/store/db.d.ts.map +1 -0
- package/dist/store/db.js +101 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/jobs.d.ts +45 -0
- package/dist/store/jobs.d.ts.map +1 -0
- package/dist/store/jobs.js +150 -0
- package/dist/store/jobs.js.map +1 -0
- package/dist/store/locks.d.ts +60 -0
- package/dist/store/locks.d.ts.map +1 -0
- package/dist/store/locks.js +172 -0
- package/dist/store/locks.js.map +1 -0
- package/dist/store/sessions.d.ts +37 -0
- package/dist/store/sessions.d.ts.map +1 -0
- package/dist/store/sessions.js +117 -0
- package/dist/store/sessions.js.map +1 -0
- package/dist/trace/digest.d.ts +77 -0
- package/dist/trace/digest.d.ts.map +1 -0
- package/dist/trace/digest.js +481 -0
- package/dist/trace/digest.js.map +1 -0
- package/package.json +68 -0
- package/skills/agy-ceiling/SKILL.md +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contract/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frozen contract types for agy-worker-mcp.
|
|
3
|
+
*
|
|
4
|
+
* READ-ONLY after Stage 1. If a downstream module needs a change here, report it
|
|
5
|
+
* through `contract_change_requests` instead of editing this file.
|
|
6
|
+
*
|
|
7
|
+
* Everything describing agy's own wire format is transcribed from measured
|
|
8
|
+
* output and raw NDJSON transcripts. No field in the `Agy*` types is invented.
|
|
9
|
+
*/
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// 0. Constants shared across processes
|
|
12
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
+
/** Bumped whenever `schema.sql` changes shape. Stored in `meta.schema_version`. */
|
|
14
|
+
export const SCHEMA_VERSION = 1;
|
|
15
|
+
/**
|
|
16
|
+
* Shape version of `jobs/<id>/broker-result.json`, independent of the SQLite
|
|
17
|
+
* `SCHEMA_VERSION` (that file is not a table).
|
|
18
|
+
*
|
|
19
|
+
* 1 → 2: `verification.permission_denials` + `verification.environment_blocks`
|
|
20
|
+
* became the single `verification.blockers` list.
|
|
21
|
+
* 2 → 3: `verification.verify` was added (PR6, `verify_command`) — `null` on a
|
|
22
|
+
* migrated file, since no pre-0.2.0 job ever ran a verify command.
|
|
23
|
+
* `loadBrokerResult` migrates an older file in memory rather than failing, so a
|
|
24
|
+
* job directory written by an earlier release stays readable; an unknown
|
|
25
|
+
* *newer* version is refused loudly instead.
|
|
26
|
+
*/
|
|
27
|
+
export const BROKER_RESULT_VERSION = 3;
|
|
28
|
+
/** Environment variables this package reads. Nothing else may be consulted. */
|
|
29
|
+
export const ENV = {
|
|
30
|
+
/** Overrides project-root discovery (see docs/operations.md). */
|
|
31
|
+
PROJECT_ROOT: 'AGY_WORKER_PROJECT',
|
|
32
|
+
/** Overrides `~/.agy-worker` as the state home. Tests set this. */
|
|
33
|
+
STATE_HOME: 'AGY_WORKER_HOME',
|
|
34
|
+
/** Absolute path to the `agy` executable. Tests point this at the fake. */
|
|
35
|
+
AGY_BIN: 'AGY_WORKER_AGY_BIN',
|
|
36
|
+
/**
|
|
37
|
+
* Overrides `binPath('gate')`. Tests point this at a nonexistent path to
|
|
38
|
+
* exercise `agy_start`'s `existsSync(gatePath)` check (PR3 §3.1) without
|
|
39
|
+
* having to move the real `dist/gate.js` out from under a build every other
|
|
40
|
+
* test also depends on.
|
|
41
|
+
*/
|
|
42
|
+
GATE_BIN: 'AGY_WORKER_GATE_BIN',
|
|
43
|
+
/** Job id the runner process is executing. Set by the server when spawning. */
|
|
44
|
+
JOB_ID: 'AGY_WORKER_JOB_ID',
|
|
45
|
+
/** Scenario file consumed by `test/fake-agy` only; never read by src/. */
|
|
46
|
+
FAKE_SCENARIO: 'AGY_FAKE_SCENARIO',
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Flags that must never appear in a generated argv, at any call site.
|
|
50
|
+
* `--continue` resumes a *global* "most recent conversation" which collides
|
|
51
|
+
* head-on with multi-session operation; `--prompt-interactive` needs a TTY.
|
|
52
|
+
*
|
|
53
|
+
* `--dangerously-skip-permissions` was on this list until 0.2.0. It is now
|
|
54
|
+
* emitted on every spawn (`buildAgyArgv`) — see the comment there for the
|
|
55
|
+
* three invariants that make that safe and the measurement (M3) behind it.
|
|
56
|
+
*/
|
|
57
|
+
export const FORBIDDEN_AGY_FLAGS = [
|
|
58
|
+
'--continue',
|
|
59
|
+
'-c',
|
|
60
|
+
'--prompt-interactive',
|
|
61
|
+
'-i',
|
|
62
|
+
'--new-project',
|
|
63
|
+
];
|
|
64
|
+
/** agy's own prefix on a hook denial, measured in `.spike/out/run6.events.ndjson`. */
|
|
65
|
+
export const HOOK_DENIAL_PREFIX = 'tool call denied by pre-tool hook:';
|
|
66
|
+
/**
|
|
67
|
+
* Marker the gate embeds in its `reason` string so `events/detect.ts` can parse a
|
|
68
|
+
* denial losslessly instead of scraping prose. agy passes `reason` through to the
|
|
69
|
+
* model verbatim (measured, §10), so the human-readable guidance comes first and
|
|
70
|
+
* the machine payload trails it in brackets:
|
|
71
|
+
*
|
|
72
|
+
* `<guidance sentence> [agy-worker-denial:{"required_rule":"command(git push)",...}]`
|
|
73
|
+
*/
|
|
74
|
+
export const GATE_DENIAL_MARKER = 'agy-worker-denial:';
|
|
75
|
+
/** Output signatures that mean "the sandbox blocked this silently" (see docs/permissions.md). */
|
|
76
|
+
export const ENVIRONMENT_BLOCK_SIGNATURES = [
|
|
77
|
+
'Could not resolve host',
|
|
78
|
+
'Temporary failure in name resolution',
|
|
79
|
+
'Connection refused',
|
|
80
|
+
'Operation not permitted',
|
|
81
|
+
'Read-only file system',
|
|
82
|
+
'EACCES',
|
|
83
|
+
];
|
|
84
|
+
/**
|
|
85
|
+
* The subset of {@link ENVIRONMENT_BLOCK_SIGNATURES} that means "the sandbox
|
|
86
|
+
* refused the network" rather than a filesystem or capability refusal. Since
|
|
87
|
+
* 0.2.1 the two are lifted the same way — by not running the job sandboxed
|
|
88
|
+
* (I2) — so this only shapes the blocker's wording.
|
|
89
|
+
*/
|
|
90
|
+
export const NETWORK_BLOCK_SIGNATURES = [
|
|
91
|
+
'Could not resolve host',
|
|
92
|
+
'Temporary failure in name resolution',
|
|
93
|
+
'Connection refused',
|
|
94
|
+
];
|
|
95
|
+
/**
|
|
96
|
+
* Substrings that identify a refusal by agy's **own** permission engine, as
|
|
97
|
+
* opposed to our gate.
|
|
98
|
+
*
|
|
99
|
+
* Both entries are verbatim fragments of a measured message; the observed line
|
|
100
|
+
* was:
|
|
101
|
+
*
|
|
102
|
+
* `permission check failed for unsandboxed "ls -la /Users/<user>/.jdks/": user
|
|
103
|
+
* denied permission to run command:\nls -la /Users/<user>/.jdks/`
|
|
104
|
+
*
|
|
105
|
+
* These refusals are not ours and no `permissions.allow` rule can lift them —
|
|
106
|
+
* the gate never saw the call. Matching them only changes how the warning is
|
|
107
|
+
* worded, never the outcome (they arrive as ordinary `state: 'ERROR'` tool
|
|
108
|
+
* steps, which `decideOutcome` deliberately does not count as blocks).
|
|
109
|
+
*/
|
|
110
|
+
export const AGY_ENGINE_REFUSAL_SIGNATURES = [
|
|
111
|
+
'user denied permission to run command',
|
|
112
|
+
'permission check failed for unsandboxed',
|
|
113
|
+
];
|
|
114
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contract/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAEtC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,iEAAiE;IACjE,YAAY,EAAE,oBAAoB;IAClC,mEAAmE;IACnE,UAAU,EAAE,iBAAiB;IAC7B,2EAA2E;IAC3E,OAAO,EAAE,oBAAoB;IAC7B;;;;;OAKG;IACH,QAAQ,EAAE,qBAAqB;IAC/B,+EAA+E;IAC/E,MAAM,EAAE,mBAAmB;IAC3B,0EAA0E;IAC1E,aAAa,EAAE,mBAAmB;CAC1B,CAAA;AAEV;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,YAAY;IACZ,IAAI;IACJ,sBAAsB;IACtB,IAAI;IACJ,eAAe;CAChB,CAAA;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,oCAAoC,CAAA;AAEtE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,iGAAiG;AACjG,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC7D,wBAAwB;IACxB,sCAAsC;IACtC,oBAAoB;IACpB,yBAAyB;IACzB,uBAAuB;IACvB,QAAQ;CACT,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,wBAAwB;IACxB,sCAAsC;IACtC,oBAAoB;CACrB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,uCAAuC;IACvC,yCAAyC;CAC1C,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursors are byte offsets into `events.ndjson`.
|
|
3
|
+
*
|
|
4
|
+
* There is no shared state and no line index: a reader seeks, parses only complete
|
|
5
|
+
* lines, and returns the offset just past the last complete one. A partially
|
|
6
|
+
* written trailing line is simply not consumed yet, so a growing file is read
|
|
7
|
+
* exactly once with no duplicates and no gaps.
|
|
8
|
+
*/
|
|
9
|
+
export interface CursorRead {
|
|
10
|
+
/** Complete lines only, newline stripped. */
|
|
11
|
+
lines: string[];
|
|
12
|
+
/** Byte offset just past the last complete line. Feed this back next time. */
|
|
13
|
+
nextCursor: number;
|
|
14
|
+
/** Cursor reached the current end of file. */
|
|
15
|
+
eof: boolean;
|
|
16
|
+
/** `maxBytes` cut the read short; call again from `nextCursor`. */
|
|
17
|
+
truncated: boolean;
|
|
18
|
+
/** File size when the read happened. */
|
|
19
|
+
size: number;
|
|
20
|
+
/**
|
|
21
|
+
* True when the last entry in `lines` is a single line that itself exceeded
|
|
22
|
+
* `maxBytes` and was returned content-truncated so the cursor could still
|
|
23
|
+
* advance. Absent (not just false) on every other read.
|
|
24
|
+
*/
|
|
25
|
+
lineTruncated?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ReadLinesOptions {
|
|
28
|
+
/** Cap on bytes read in one call. Protects the response-size budget. */
|
|
29
|
+
maxBytes?: number;
|
|
30
|
+
/** Cap on lines returned. */
|
|
31
|
+
maxLines?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read complete lines starting at `cursor`.
|
|
35
|
+
*
|
|
36
|
+
* A cursor past EOF (file truncated or replaced) resets to 0 rather than
|
|
37
|
+
* throwing. Missing file is not an error: a job that has not written yet returns
|
|
38
|
+
* an empty read at cursor 0.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readLinesFrom(filePath: string, cursor: number, opts?: ReadLinesOptions): CursorRead;
|
|
41
|
+
/**
|
|
42
|
+
* Byte offset just past the last complete line, without reading the lines.
|
|
43
|
+
*
|
|
44
|
+
* `agy_wait` needs a truthful cursor once a job has finished: that branch
|
|
45
|
+
* returns the judgement packet instead of a cursor read, so without this it
|
|
46
|
+
* reported 0 and the caller's next `agy_logs({ after_cursor })` replayed the
|
|
47
|
+
* whole stream.
|
|
48
|
+
*/
|
|
49
|
+
export declare function completeLineEnd(filePath: string): number;
|
|
50
|
+
/** Read just the first complete line. The gate uses this to grab `conversation_id`. */
|
|
51
|
+
export declare function readFirstLine(filePath: string): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Last `n` complete lines, read backwards from the end so a large file is never
|
|
54
|
+
* fully loaded. Mutually exclusive with a cursor read by convention — the tools
|
|
55
|
+
* reject being given both.
|
|
56
|
+
*/
|
|
57
|
+
export declare function tailLines(filePath: string, n: number, maxBytes?: number): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Read complete lines from the tail of the file up to `maxBytes`.
|
|
60
|
+
*
|
|
61
|
+
* If the file is larger than `maxBytes`, reads the final `maxBytes` window
|
|
62
|
+
* and discards the leading line if it was cut mid-line.
|
|
63
|
+
*/
|
|
64
|
+
export declare function readTailLines(filePath: string, maxBytes: number): string[];
|
|
65
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/events/cursor.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,GAAG,EAAE,OAAO,CAAA;IACZ,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAsBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,UAAU,CAwFZ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8BxD;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiC7D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAiClF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C1E"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { closeSync, fstatSync, openSync, readSync, statSync } from 'node:fs';
|
|
2
|
+
const NEWLINE = 0x0a;
|
|
3
|
+
/** Scan forward from `from` (exclusive of any prior read) for a newline byte, chunked so an
|
|
4
|
+
* enormous line is never loaded whole just to find its terminator. Returns -1 if none of
|
|
5
|
+
* `[from, upTo)` contains one. */
|
|
6
|
+
function findNewlineFrom(fd, from, upTo) {
|
|
7
|
+
const chunkSize = 65536;
|
|
8
|
+
let pos = from;
|
|
9
|
+
const chunk = Buffer.alloc(chunkSize);
|
|
10
|
+
while (pos < upTo) {
|
|
11
|
+
const toRead = Math.min(chunkSize, upTo - pos);
|
|
12
|
+
const n = readSync(fd, chunk, 0, toRead, pos);
|
|
13
|
+
if (n <= 0)
|
|
14
|
+
return -1;
|
|
15
|
+
const idx = chunk.subarray(0, n).indexOf(NEWLINE);
|
|
16
|
+
if (idx !== -1)
|
|
17
|
+
return pos + idx;
|
|
18
|
+
pos += n;
|
|
19
|
+
}
|
|
20
|
+
return -1;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read complete lines starting at `cursor`.
|
|
24
|
+
*
|
|
25
|
+
* A cursor past EOF (file truncated or replaced) resets to 0 rather than
|
|
26
|
+
* throwing. Missing file is not an error: a job that has not written yet returns
|
|
27
|
+
* an empty read at cursor 0.
|
|
28
|
+
*/
|
|
29
|
+
export function readLinesFrom(filePath, cursor, opts) {
|
|
30
|
+
let size;
|
|
31
|
+
try {
|
|
32
|
+
size = statSync(filePath).size;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return { lines: [], nextCursor: 0, eof: true, truncated: false, size: 0 };
|
|
36
|
+
}
|
|
37
|
+
let start = cursor < 0 || cursor > size ? 0 : cursor;
|
|
38
|
+
if (start === size) {
|
|
39
|
+
return { lines: [], nextCursor: start, eof: true, truncated: false, size };
|
|
40
|
+
}
|
|
41
|
+
const maxBytes = opts?.maxBytes;
|
|
42
|
+
const cappedByBytes = maxBytes !== undefined && size - start > maxBytes;
|
|
43
|
+
const readEnd = cappedByBytes ? start + maxBytes : size;
|
|
44
|
+
const length = readEnd - start;
|
|
45
|
+
const fd = openSync(filePath, 'r');
|
|
46
|
+
try {
|
|
47
|
+
const buf = Buffer.alloc(length);
|
|
48
|
+
readSync(fd, buf, 0, length, start);
|
|
49
|
+
let lastNl = -1;
|
|
50
|
+
for (let i = buf.length - 1; i >= 0; i--) {
|
|
51
|
+
if (buf[i] === NEWLINE) {
|
|
52
|
+
lastNl = i;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (lastNl === -1) {
|
|
57
|
+
if (!cappedByBytes) {
|
|
58
|
+
// Not capped and still no newline: a genuine trailing partial write.
|
|
59
|
+
// Nothing consumed; the caller will see the rest once it lands.
|
|
60
|
+
return { lines: [], nextCursor: start, eof: start === size, truncated: false, size };
|
|
61
|
+
}
|
|
62
|
+
// A single line longer than `maxBytes` (agy events routinely embed tool
|
|
63
|
+
// output past 32KB). Without this branch `nextCursor` never advances past
|
|
64
|
+
// it and every subsequent call repeats the same non-progressing window
|
|
65
|
+
// forever (finding 4). Scan forward — beyond the capped window, but
|
|
66
|
+
// bounded by the file's size at read time — for the line's real
|
|
67
|
+
// terminator so the cursor can still move past it.
|
|
68
|
+
const nlPos = findNewlineFrom(fd, readEnd, size);
|
|
69
|
+
if (nlPos === -1) {
|
|
70
|
+
// The oversized line has still not finished being written even past
|
|
71
|
+
// the cap; still nothing to consume.
|
|
72
|
+
return { lines: [], nextCursor: start, eof: false, truncated: true, size };
|
|
73
|
+
}
|
|
74
|
+
const lineText = buf.toString('utf8');
|
|
75
|
+
const nextCursor = nlPos + 1;
|
|
76
|
+
return {
|
|
77
|
+
lines: [lineText],
|
|
78
|
+
nextCursor,
|
|
79
|
+
eof: nextCursor === size,
|
|
80
|
+
truncated: true,
|
|
81
|
+
lineTruncated: true,
|
|
82
|
+
size,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const text = buf.subarray(0, lastNl + 1).toString('utf8');
|
|
86
|
+
let lines = text.split('\n');
|
|
87
|
+
lines.pop(); // trailing '' from the final split on the terminating \n
|
|
88
|
+
let nextCursor = start + lastNl + 1;
|
|
89
|
+
let truncatedByLines = false;
|
|
90
|
+
const maxLines = opts?.maxLines;
|
|
91
|
+
if (maxLines !== undefined && lines.length > maxLines) {
|
|
92
|
+
const kept = lines.slice(0, maxLines);
|
|
93
|
+
let bytes = 0;
|
|
94
|
+
for (const l of kept)
|
|
95
|
+
bytes += Buffer.byteLength(l, 'utf8') + 1;
|
|
96
|
+
lines = kept;
|
|
97
|
+
nextCursor = start + bytes;
|
|
98
|
+
truncatedByLines = true;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
lines,
|
|
102
|
+
nextCursor,
|
|
103
|
+
eof: nextCursor === size,
|
|
104
|
+
truncated: cappedByBytes || truncatedByLines,
|
|
105
|
+
size,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
closeSync(fd);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Byte offset just past the last complete line, without reading the lines.
|
|
114
|
+
*
|
|
115
|
+
* `agy_wait` needs a truthful cursor once a job has finished: that branch
|
|
116
|
+
* returns the judgement packet instead of a cursor read, so without this it
|
|
117
|
+
* reported 0 and the caller's next `agy_logs({ after_cursor })` replayed the
|
|
118
|
+
* whole stream.
|
|
119
|
+
*/
|
|
120
|
+
export function completeLineEnd(filePath) {
|
|
121
|
+
let fd;
|
|
122
|
+
try {
|
|
123
|
+
fd = openSync(filePath, 'r');
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
const size = fstatSync(fd).size;
|
|
130
|
+
if (size === 0)
|
|
131
|
+
return 0;
|
|
132
|
+
// The common case by far: a closed stream ends with its terminator.
|
|
133
|
+
const last = Buffer.alloc(1);
|
|
134
|
+
readSync(fd, last, 0, 1, size - 1);
|
|
135
|
+
if (last[0] === NEWLINE)
|
|
136
|
+
return size;
|
|
137
|
+
// A partial trailing write. Walk back for the previous terminator.
|
|
138
|
+
let windowSize = Math.min(size, 4096);
|
|
139
|
+
for (;;) {
|
|
140
|
+
const start = Math.max(0, size - windowSize);
|
|
141
|
+
const buf = Buffer.alloc(size - start);
|
|
142
|
+
readSync(fd, buf, 0, buf.length, start);
|
|
143
|
+
const idx = buf.lastIndexOf(NEWLINE);
|
|
144
|
+
if (idx !== -1)
|
|
145
|
+
return start + idx + 1;
|
|
146
|
+
if (start === 0)
|
|
147
|
+
return 0;
|
|
148
|
+
windowSize = Math.min(size, windowSize * 2);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
closeSync(fd);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Read just the first complete line. The gate uses this to grab `conversation_id`. */
|
|
156
|
+
export function readFirstLine(filePath) {
|
|
157
|
+
let fd;
|
|
158
|
+
try {
|
|
159
|
+
fd = openSync(filePath, 'r');
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const size = fstatSync(fd).size;
|
|
166
|
+
if (size === 0)
|
|
167
|
+
return null;
|
|
168
|
+
let offset = 0;
|
|
169
|
+
let buf = Buffer.alloc(0);
|
|
170
|
+
let chunkSize = 4096;
|
|
171
|
+
while (offset < size) {
|
|
172
|
+
const toRead = Math.min(chunkSize, size - offset);
|
|
173
|
+
const chunk = Buffer.alloc(toRead);
|
|
174
|
+
readSync(fd, chunk, 0, toRead, offset);
|
|
175
|
+
buf = Buffer.concat([buf, chunk]);
|
|
176
|
+
offset += toRead;
|
|
177
|
+
const nlIdx = buf.indexOf(NEWLINE);
|
|
178
|
+
if (nlIdx !== -1) {
|
|
179
|
+
return buf.subarray(0, nlIdx).toString('utf8');
|
|
180
|
+
}
|
|
181
|
+
chunkSize *= 2;
|
|
182
|
+
}
|
|
183
|
+
// Reached EOF without ever seeing a newline: the only line is incomplete.
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
closeSync(fd);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Last `n` complete lines, read backwards from the end so a large file is never
|
|
192
|
+
* fully loaded. Mutually exclusive with a cursor read by convention — the tools
|
|
193
|
+
* reject being given both.
|
|
194
|
+
*/
|
|
195
|
+
export function tailLines(filePath, n, maxBytes) {
|
|
196
|
+
if (n <= 0)
|
|
197
|
+
return [];
|
|
198
|
+
let fd;
|
|
199
|
+
try {
|
|
200
|
+
fd = openSync(filePath, 'r');
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const size = fstatSync(fd).size;
|
|
207
|
+
if (size === 0)
|
|
208
|
+
return [];
|
|
209
|
+
const cap = maxBytes !== undefined && maxBytes > 0 ? Math.min(maxBytes, size) : size;
|
|
210
|
+
let windowSize = Math.min(size, 4096);
|
|
211
|
+
for (;;) {
|
|
212
|
+
const start = Math.max(0, size - windowSize);
|
|
213
|
+
const length = size - start;
|
|
214
|
+
const buf = Buffer.alloc(length);
|
|
215
|
+
readSync(fd, buf, 0, length, start);
|
|
216
|
+
const text = buf.toString('utf8');
|
|
217
|
+
let parts = text.split('\n');
|
|
218
|
+
if (start > 0)
|
|
219
|
+
parts.shift(); // drop a possibly-partial leading line
|
|
220
|
+
if (parts.length > 0 && parts[parts.length - 1] === '')
|
|
221
|
+
parts.pop(); // trailing \n
|
|
222
|
+
if (parts.length >= n || start === 0 || windowSize >= cap) {
|
|
223
|
+
return parts.slice(-n);
|
|
224
|
+
}
|
|
225
|
+
windowSize = Math.min(size, windowSize * 2, cap);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
closeSync(fd);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Read complete lines from the tail of the file up to `maxBytes`.
|
|
234
|
+
*
|
|
235
|
+
* If the file is larger than `maxBytes`, reads the final `maxBytes` window
|
|
236
|
+
* and discards the leading line if it was cut mid-line.
|
|
237
|
+
*/
|
|
238
|
+
export function readTailLines(filePath, maxBytes) {
|
|
239
|
+
if (maxBytes <= 0)
|
|
240
|
+
return [];
|
|
241
|
+
let fd;
|
|
242
|
+
try {
|
|
243
|
+
fd = openSync(filePath, 'r');
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return [];
|
|
247
|
+
}
|
|
248
|
+
try {
|
|
249
|
+
const end = completeLineEnd(filePath);
|
|
250
|
+
if (end === 0)
|
|
251
|
+
return [];
|
|
252
|
+
if (end <= maxBytes) {
|
|
253
|
+
const buf = Buffer.alloc(end);
|
|
254
|
+
readSync(fd, buf, 0, end, 0);
|
|
255
|
+
const text = buf.toString('utf8');
|
|
256
|
+
const parts = text.split('\n');
|
|
257
|
+
if (parts.length > 0 && parts[parts.length - 1] === '')
|
|
258
|
+
parts.pop();
|
|
259
|
+
return parts;
|
|
260
|
+
}
|
|
261
|
+
const start = end - maxBytes;
|
|
262
|
+
const length = maxBytes;
|
|
263
|
+
const buf = Buffer.alloc(length);
|
|
264
|
+
readSync(fd, buf, 0, length, start);
|
|
265
|
+
let firstLineTruncated = false;
|
|
266
|
+
if (start > 0) {
|
|
267
|
+
const prevByte = Buffer.alloc(1);
|
|
268
|
+
readSync(fd, prevByte, 0, 1, start - 1);
|
|
269
|
+
if (prevByte[0] !== NEWLINE) {
|
|
270
|
+
firstLineTruncated = true;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const text = buf.toString('utf8');
|
|
274
|
+
const parts = text.split('\n');
|
|
275
|
+
if (parts.length > 0 && parts[parts.length - 1] === '')
|
|
276
|
+
parts.pop();
|
|
277
|
+
if (firstLineTruncated && parts.length > 0) {
|
|
278
|
+
parts.shift();
|
|
279
|
+
}
|
|
280
|
+
return parts;
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
closeSync(fd);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/events/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AgyEvent, AgyStepUpdateEvent, DenialClass1, DenialClass2, DenialScan, GateDenialPayload } from '../contract/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Class 1 — a structured refusal.
|
|
4
|
+
*
|
|
5
|
+
* Signal: `step_type === 'tool' && state === 'ERROR'`, message in
|
|
6
|
+
* `tool_info.error.message`. stderr stays empty and the exit code stays 0, so
|
|
7
|
+
* this event is the only trace.
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectClass1(step: AgyStepUpdateEvent): DenialClass1 | null;
|
|
10
|
+
/**
|
|
11
|
+
* Class 2 — a silent environment block.
|
|
12
|
+
*
|
|
13
|
+
* Signal: an ordinary successful `run_command` step whose `tool_info.output`
|
|
14
|
+
* matches one of `ENVIRONMENT_BLOCK_SIGNATURES`. There is no error event at all.
|
|
15
|
+
* This is the more dangerous class: an hour-long job can fail to install
|
|
16
|
+
* anything and still return SUCCESS.
|
|
17
|
+
*
|
|
18
|
+
* Only `run_command` is scanned: the sandbox wraps the shell and nothing else,
|
|
19
|
+
* and the output of `grep_search`/`view_file` over a source tree that merely
|
|
20
|
+
* *contains* the words "Operation not permitted" is not a block (measured
|
|
21
|
+
* 2026-09-03: a job grepping this very repository produced three false
|
|
22
|
+
* blockers that way).
|
|
23
|
+
*/
|
|
24
|
+
export declare function detectClass2(step: AgyStepUpdateEvent): DenialClass2 | null;
|
|
25
|
+
/** Run both detectors over a whole event stream. */
|
|
26
|
+
export declare function scanDenials(events: AgyEvent[]): DenialScan;
|
|
27
|
+
/**
|
|
28
|
+
* Pull the machine payload our gate embedded after `GATE_DENIAL_MARKER`.
|
|
29
|
+
* Null when the refusal did not come from us.
|
|
30
|
+
*
|
|
31
|
+
* Format authored by the gate: `<guidance> [agy-worker-denial:{"...json..."}]`.
|
|
32
|
+
* The payload runs from right after the marker up to the closing `]` that wraps
|
|
33
|
+
* it, so a trailing `]` (if present) is stripped before parsing.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseGateDenial(message: string): GateDenialPayload | null;
|
|
36
|
+
/**
|
|
37
|
+
* Best-effort `required_rule` from a denial message.
|
|
38
|
+
*
|
|
39
|
+
* Prefers the embedded payload; falls back to the `(required rule: ...)` prose
|
|
40
|
+
* form that appears in the measured transcript. The caller pastes the result
|
|
41
|
+
* straight into the next `agy_start`'s `permissions.allow`, which is the whole
|
|
42
|
+
* recovery loop (see docs/permissions.md).
|
|
43
|
+
*/
|
|
44
|
+
export declare function extractRequiredRule(message: string): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Which signature, if any, a tool output contains. Case-insensitive: the same
|
|
47
|
+
* seatbelt refusal surfaces as `Operation not permitted` from coreutils
|
|
48
|
+
* (`mkdir: build: Operation not permitted`) and as `operation not permitted`
|
|
49
|
+
* from zsh's own redirection error (`zsh:1: operation not permitted: note.txt`,
|
|
50
|
+
* measured on agy 1.1.24), and as `sh: out.txt: Operation not permitted` — all
|
|
51
|
+
* single-line or final-line. The canonical (capitalised) signature is returned.
|
|
52
|
+
*
|
|
53
|
+
* 0.3.0 PR5: Only inspects the last 5 non-empty lines of the output.
|
|
54
|
+
* A real sandbox/network refusal is the failing command's final message;
|
|
55
|
+
* a signature buried mid-output inside a test report is not.
|
|
56
|
+
*/
|
|
57
|
+
export declare function matchEnvironmentSignature(output: string): string | null;
|
|
58
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/events/detect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;AAe7B;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA2B1E;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA6B1E;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAa1D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAgBzE;AAOD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcvE"}
|