@vforsh/argus 0.1.21 → 0.1.23

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.
Files changed (47) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +488 -121
  3. package/dist/bin.js +2 -0
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli/register/evalCommands.d.ts.map +1 -1
  6. package/dist/cli/register/evalCommands.js +1 -0
  7. package/dist/cli/register/evalCommands.js.map +1 -1
  8. package/dist/cli/register/logsCommands.d.ts.map +1 -1
  9. package/dist/cli/register/logsCommands.js +15 -4
  10. package/dist/cli/register/logsCommands.js.map +1 -1
  11. package/dist/commands/eval.d.ts.map +1 -1
  12. package/dist/commands/eval.js +2 -0
  13. package/dist/commands/eval.js.map +1 -1
  14. package/dist/commands/evalBundle.d.ts +2 -1
  15. package/dist/commands/evalBundle.d.ts.map +1 -1
  16. package/dist/commands/evalBundle.js +28 -9
  17. package/dist/commands/evalBundle.js.map +1 -1
  18. package/dist/commands/evalPolling.d.ts +1 -0
  19. package/dist/commands/evalPolling.d.ts.map +1 -1
  20. package/dist/commands/evalPolling.js +1 -0
  21. package/dist/commands/evalPolling.js.map +1 -1
  22. package/dist/commands/evalShared.d.ts +2 -0
  23. package/dist/commands/evalShared.d.ts.map +1 -1
  24. package/dist/commands/evalShared.js +14 -5
  25. package/dist/commands/evalShared.js.map +1 -1
  26. package/dist/commands/evalUntil.d.ts.map +1 -1
  27. package/dist/commands/evalUntil.js +1 -0
  28. package/dist/commands/evalUntil.js.map +1 -1
  29. package/dist/commands/logs.d.ts +6 -0
  30. package/dist/commands/logs.d.ts.map +1 -1
  31. package/dist/commands/logs.js +5 -0
  32. package/dist/commands/logs.js.map +1 -1
  33. package/dist/eval/evalClient.d.ts +1 -0
  34. package/dist/eval/evalClient.d.ts.map +1 -1
  35. package/dist/eval/evalClient.js +2 -0
  36. package/dist/eval/evalClient.js.map +1 -1
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/output/io.d.ts +4 -0
  40. package/dist/output/io.d.ts.map +1 -1
  41. package/dist/output/io.js +19 -1
  42. package/dist/output/io.js.map +1 -1
  43. package/dist/skill/argus/SKILL.md +16 -0
  44. package/dist/skill/argus/reference/EVAL.md +35 -2
  45. package/dist/skill/argus/reference/INSPECT.md +3 -0
  46. package/dist/skill/argus/reference/PLUGINS.md +16 -2
  47. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"evalClient.d.ts","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMrE,MAAM,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAClD,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,CAAA;AAEzF,MAAM,MAAM,iBAAiB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1G,eAAO,MAAM,QAAQ,GAAU,OAAO,aAAa,KAAG,OAAO,CAAC,WAAW,CAqCxE,CAAA;AAED,gIAAgI;AAChI,eAAO,MAAM,wBAAwB,GAAI,SAAS,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,OAAO,EAAE,WAAW,MAAM,GAAG,SAAS,KAAG,MAY5H,CAAA;AAcD,eAAO,MAAM,eAAe,GAAU,OAAO,oBAAoB,KAAG,OAAO,CAAC,iBAAiB,CA+B5F,CAAA"}
1
+ {"version":3,"file":"evalClient.d.ts","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMrE,MAAM,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAClD,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,CAAA;AAEzF,MAAM,MAAM,iBAAiB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1G,eAAO,MAAM,QAAQ,GAAU,OAAO,aAAa,KAAG,OAAO,CAAC,WAAW,CAsCxE,CAAA;AAED,gIAAgI;AAChI,eAAO,MAAM,wBAAwB,GAAI,SAAS,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,OAAO,EAAE,WAAW,MAAM,GAAG,SAAS,KAAG,MAY5H,CAAA;AAcD,eAAO,MAAM,eAAe,GAAU,OAAO,oBAAoB,KAAG,OAAO,CAAC,iBAAiB,CAgC5F,CAAA"}
@@ -9,6 +9,7 @@ export const evalOnce = async (input) => {
9
9
  replMode: input.replMode,
10
10
  returnByValue: input.returnByValue,
11
11
  timeoutMs: input.timeoutMs,
12
+ scenario: input.scenario,
12
13
  };
13
14
  const requestTimeoutMs = input.timeoutMs ? input.timeoutMs + 5_000 : DEFAULT_EVAL_REQUEST_TIMEOUT_MS;
14
15
  let response;
@@ -71,6 +72,7 @@ export const evalWithRetries = async (input) => {
71
72
  returnByValue: input.returnByValue,
72
73
  timeoutMs: input.timeoutMs,
73
74
  failOnException: input.failOnException,
75
+ scenario: input.scenario,
74
76
  });
75
77
  if (outcome.ok) {
76
78
  return { ...outcome, attempt };
@@ -1 +1 @@
1
- {"version":3,"file":"evalClient.js","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evalClient.js","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export type { ArgusScenarioContext, ArgusScenarioLogOptions, ArgusScenarioLogSession, ArgusScenarioLogs, ArgusScenarioLogsResult, ArgusScenarioScreenshotOptions, } from '@vforsh/argus-core';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,GAC9B,MAAM,oBAAoB,CAAA"}
@@ -1,9 +1,13 @@
1
1
  type OutputOptions = {
2
2
  json?: boolean;
3
3
  };
4
+ /** Route incidental console progress to stderr before JSON-mode plugins are loaded. */
5
+ export declare const configureMachineSafeConsole: (argv: readonly string[]) => void;
4
6
  export type Output = {
5
7
  json: boolean;
8
+ /** Write the command's single machine-readable JSON document. */
6
9
  writeJson: (value: unknown) => void;
10
+ /** Write one NDJSON record for explicitly streaming commands only. */
7
11
  writeJsonLine: (value: unknown) => void;
8
12
  writeHuman: (text: string) => void;
9
13
  writeWarn: (text: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/output/io.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAID,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,GAAI,SAAS,aAAa,KAAG,MA2BrD,CAAA"}
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/output/io.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAID,uFAAuF;AACvF,eAAO,MAAM,2BAA2B,GAAI,MAAM,SAAS,MAAM,EAAE,KAAG,IASrE,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,iEAAiE;IACjE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC,sEAAsE;IACtE,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,GAAI,SAAS,aAAa,KAAG,MAoCrD,CAAA"}
package/dist/output/io.js CHANGED
@@ -1,10 +1,28 @@
1
1
  const ensureTrailingNewline = (value) => (value.endsWith('\n') ? value : `${value}\n`);
2
+ /** Route incidental console progress to stderr before JSON-mode plugins are loaded. */
3
+ export const configureMachineSafeConsole = (argv) => {
4
+ if (!argv.includes('--json') && !argv.includes('--json-full')) {
5
+ return;
6
+ }
7
+ const writeConsoleError = console.error.bind(console);
8
+ console.log = writeConsoleError;
9
+ console.info = writeConsoleError;
10
+ console.debug = writeConsoleError;
11
+ };
2
12
  /** Output helpers that enforce JSON/stdout vs human/stderr rules. */
3
13
  export const createOutput = (options) => {
4
14
  const json = options.json === true;
15
+ let wroteJsonDocument = false;
5
16
  const writeJsonLine = (value) => {
6
17
  process.stdout.write(JSON.stringify(value) + '\n');
7
18
  };
19
+ const writeJson = (value) => {
20
+ if (wroteJsonDocument) {
21
+ throw new Error('Attempted to write more than one JSON document to stdout');
22
+ }
23
+ wroteJsonDocument = true;
24
+ writeJsonLine(value);
25
+ };
8
26
  const writeHuman = (text) => {
9
27
  const line = ensureTrailingNewline(text);
10
28
  if (json) {
@@ -19,7 +37,7 @@ export const createOutput = (options) => {
19
37
  };
20
38
  return {
21
39
  json,
22
- writeJson: writeJsonLine,
40
+ writeJson,
23
41
  writeJsonLine,
24
42
  writeHuman,
25
43
  writeWarn,
@@ -1 +1 @@
1
- {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/output/io.ts"],"names":[],"mappings":"AAIA,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;AAUtG,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAU,EAAE;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAA;IAElC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAQ,EAAE;QACzC,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACF,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAQ,EAAE;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,OAAO;QACN,IAAI;QACJ,SAAS,EAAE,aAAa;QACxB,aAAa;QACb,UAAU;QACV,SAAS;KACT,CAAA;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/output/io.ts"],"names":[],"mappings":"AAIA,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;AAEtG,uFAAuF;AACvF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAuB,EAAQ,EAAE;IAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/D,OAAM;IACP,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,GAAG,iBAAiB,CAAA;IAC/B,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAChC,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAA;AAClC,CAAC,CAAA;AAYD,qEAAqE;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAU,EAAE;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAA;IAClC,IAAI,iBAAiB,GAAG,KAAK,CAAA;IAE7B,MAAM,aAAa,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC1C,IAAI,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC5E,CAAC;QACD,iBAAiB,GAAG,IAAI,CAAA;QACxB,aAAa,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAQ,EAAE;QACzC,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACF,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAQ,EAAE;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,OAAO;QACN,IAAI;QACJ,SAAS;QACT,aAAa;QACb,UAAU;QACV,SAAS;KACT,CAAA;AACF,CAAC,CAAA"}
@@ -127,6 +127,8 @@ argus dom tree app --selector body --depth 2
127
127
  argus snapshot app --interactive
128
128
  ```
129
129
 
130
+ For deterministic multi-step suites, prefer a bundled TypeScript scenario with `export default async function scenario(ctx)`. The context can capture screenshots/checkpoints and open a log session directly; see [EVAL.md](./reference/EVAL.md).
131
+
130
132
  For interaction:
131
133
 
132
134
  ```bash
@@ -187,6 +189,20 @@ Keep these commands in the background in agent shells. See [START.md](./referenc
187
189
 
188
190
  **Need to keep a page unthrottled** — Use `argus page show <id>` or `argus ext show <id>`. Hide later with `argus page hide <id>`.
189
191
 
192
+ ## Google Sheets Safety Flow
193
+
194
+ With the Google Sheets plugin enabled, prefer targeted, coordinate-safe commands:
195
+
196
+ ```bash
197
+ argus sheets resolve extension "Known sheet name" --json
198
+ argus sheets schema extension --sheet "Known sheet name" --header-row 1 --json
199
+ argus sheets query extension --sheet "Known sheet name" --header-row 1 --where 'id in [872,873]' --locate --json
200
+ argus sheets apply extension --file changes.json --dry-run
201
+ argus sheets apply extension --file changes.json --yes --json
202
+ ```
203
+
204
+ Never treat whole-export row indexes as physical sheet rows: `exportRow` is only an export coordinate, while physical A1 requires exact locator verification. Prefer `resolve <name>` to `list --with-gid` on large documents. Mutations require page lease ownership, explicit old-value preconditions, mandatory typed readback, and explicit `--yes`; apply is sequential and non-atomic. Read [PLUGINS.md](./reference/PLUGINS.md) for query/diff/manifest details.
205
+
190
206
  ---
191
207
 
192
208
  ## References
@@ -25,7 +25,39 @@ argus eval app --file ./script.js --bundle
25
25
  argus eval app --file ./script.js --no-bundle
26
26
  ```
27
27
 
28
- `--file` with leading `import`/`export` auto-enables bundling (one-line stderr note). `--bundle` forces bundling; `--no-bundle` reads the file as-is. Bundling resolves the entry and any import graph esbuild can resolve from the current working directory (including paths outside the entry directory and packages under `node_modules`). Node built-ins (`node:fs`, etc.) are rejected. TypeScript is transpiled without typechecking. Helpers may `export` symbols; the entry file must not emit top-level `export` into the bundle.
28
+ `--file` with leading `import`/`export` auto-enables bundling (one-line stderr note). `--bundle` forces bundling; `--no-bundle` reads the file as-is. Bundling resolves the entry and any import graph esbuild can resolve from the current working directory (including paths outside the entry directory and packages under `node_modules`). Node built-ins (`node:fs`, etc.) are rejected. TypeScript is transpiled without typechecking.
29
+
30
+ ## TypeScript Scenario Entrypoint
31
+
32
+ Bundled files may use a normal default-exported function. Argus invokes it once with a typed page-side context and returns its result:
33
+
34
+ ```ts
35
+ import type { ArgusScenarioContext } from '@vforsh/argus'
36
+
37
+ export default async function scenario(ctx: ArgusScenarioContext) {
38
+ const logs = await ctx.logs.session()
39
+ await openLevel(Number(ctx.args.level))
40
+ const checkpoint = await ctx.checkpoint('level-open', { selector: 'canvas' })
41
+ const errors = await logs.read({ levels: ['error', 'exception'] })
42
+ return { checkpoint, errors: errors.events }
43
+ }
44
+ ```
45
+
46
+ ```bash
47
+ argus eval game --file ./scenario.ts --arg level=10 --json
48
+ ```
49
+
50
+ Context methods:
51
+
52
+ - `ctx.screenshot(options?)`: capture to a watcher-generated unique path under `screenshots/`.
53
+ - `ctx.checkpoint(name, options?)`: capture to `scenarios/checkpoints/<name>.png`; names are path-safe and deterministic.
54
+ - `ctx.logs.cursor()` / `ctx.logs.read(cursor, options?)`: explicit zero-download baselines.
55
+ - `ctx.logs.session()`: capture a baseline and return a stateful reader whose cursor advances after each `read()`.
56
+ - `ctx.args`: frozen string args from `--arg` / `--args`.
57
+
58
+ The watcher installs a nonce-scoped CDP binding only while the eval is active. Scenario actions are validated host-side, and page code cannot choose arbitrary artifact paths.
59
+
60
+ Compatibility: bundled files without a default export keep the previous final-expression result behavior. Named exports are allowed. `--no-bundle` remains raw script mode. For iframe scenarios, select the iframe as the watcher target (`argus ext select ...`) instead of combining a scenario module with the legacy `--iframe` postMessage helper.
29
61
 
30
62
  Poll until condition:
31
63
 
@@ -38,7 +70,8 @@ argus eval app "Date.now()" --interval 500 --count 10 --out ./frames.json --rota
38
70
  ## Output
39
71
 
40
72
  - Default: compact preview
41
- - `--json`: JSON object (NDJSON with `--interval`)
73
+ - `--json`: exactly one JSON document for one-shot eval; bundle/progress notes go to stderr
74
+ - `--json --interval`: explicit streaming mode and therefore NDJSON, retained for compatibility
42
75
  - `--out <path>`: write result to file; single eval overwrites, polling appends NDJSON, `--rotate` writes one numbered file per iteration
43
76
 
44
77
  ## Behavior Flags
@@ -11,10 +11,13 @@ argus logs app --match "Error|Exception" --ignore-case
11
11
  argus logs app --source console
12
12
  argus logs app --json
13
13
  argus logs app --json-full
14
+ argus logs cursor app --json
14
15
  argus logs tail app
15
16
  argus logs tail app --levels error --json
16
17
  ```
17
18
 
19
+ `logs cursor` returns the current event id without downloading the buffer. Save it before an action, then pass it to `logs --after <cursor>` to read only newly produced events.
20
+
18
21
  ## Eval / Wait
19
22
 
20
23
  ```bash
@@ -148,6 +148,7 @@ ctx.program
148
148
  argus --plugin ./packages/argus-plugin-google-sheets/dist/index.js plugin list
149
149
  argus sheets list extension-3
150
150
  argus sheets list extension-3 --with-gid
151
+ argus sheets resolve extension-3 "Иконки Август" --json
151
152
  argus sheets info extension-3
152
153
  argus sheets switch extension-3 "Sheet 2"
153
154
  argus sheets open extension-3 2
@@ -155,17 +156,30 @@ argus sheets add extension-3
155
156
  argus sheets rename extension-3 "Sheet 2" "Archive"
156
157
  argus sheets move extension-3 "Archive" 1
157
158
  argus sheets remove extension-3 "Sheet 3" --force
158
- argus sheets rows add extension-3 5 --count 2 --before
159
+ argus sheets rows add extension-3 5 --count 2 --before --sheet "Sheet 2" --expect-cell 'A5=anchor'
159
160
  argus sheets rows remove extension-3 5 --count 2 --force
160
161
  argus sheets columns add extension-3 3 --after
161
162
  argus sheets columns remove extension-3 3 --force
162
163
  argus sheets read extension-3 --range A1:C5
163
164
  argus sheets export extension-3 --range A1:C5 --format tsv
164
165
  argus sheets find extension-3 "needle" --column ru --ignore-case
166
+ argus sheets schema extension-3 --sheet "Sheet 2" --header-row 1 --json
167
+ argus sheets query extension-3 --sheet "Sheet 2" --header-row 1 --where 'promoId in [872,873]' --select 'promoId,icon' --locate --json
168
+ argus sheets diff extension-3 --sheet "Sheet 2" --against backup.csv --key promoId --columns icon
169
+ argus sheets apply extension-3 --file changes.json --dry-run
170
+ argus sheets apply extension-3 --file changes.json --yes --json
165
171
  argus sheets write extension-3 B12 --value "Новое значение"
166
172
  ```
167
173
 
168
- `sheets`/`gs` works against an attached Google Sheets tab. `list` reports visible sheet tabs; `--with-gid` briefly switches through them and restores the original sheet. `switch`/`open`, `rename`, `move`, and `remove` accept a visible sheet name, 1-based visible index, or gid. `add` creates a sheet through the live UI; `remove` requires `--force`. `rows add/remove` and `columns add/remove` mutate the active sheet by 1-based index; add commands require `--before` or `--after`, and remove commands require `--force`. Reads use authenticated CSV export from inside the tab; writes select a range in the live UI and paste TSV.
174
+ `sheets`/`gs` works against an attached authenticated Google Sheets tab. Prefer `resolve <known-name>` over `list --with-gid` for huge documents; full traversal is guarded, internally deadline-bounded, reports progress on stderr, and restores the original tab. Multi-call UI operations hold a page-scoped lease so separate CLI processes cannot switch/select over each other.
175
+
176
+ Whole-sheet GViz/CSV can collapse blank physical rows. `find` therefore returns only exact physical coordinates verified by bounded single-row reads. Query candidates always expose `exportRow`; `sheetRow`/A1 exist only after `--locate`. Read JSON keeps target sheet/gid/URL separate from browser current/restored URL.
177
+
178
+ `schema` models a physical header row with normalized/duplicate/empty metadata. `query` supports equality, `in`, substring, regex, select/limit, exact-count/unique assertions, and optional exact location. `diff` validates unique keys in sheet/local CSV/TSV and reports additions/removals/changes; `--emit-plan` refuses unsafe partial plans.
179
+
180
+ `apply` accepts a version-1 semantic manifest with `insertRowsAfter`, `updateByKey`, typed `setRange`, sparse `setCells`, and native `clear`. Require exactly one of `--dry-run` or `--yes`; there is no `--force` bypass. It preflights every operation before mutation, rechecks each old value, executes sequentially (never transactionally), performs mandatory typed/formula readback, and emits a journal plus rollback manifest. See the package README for the manifest schema and migration notes.
181
+
182
+ Legacy `write`/`batch` remain deprecated compatibility paths. Empty writes and disabled verification are rejected; mismatches exit 1 even without `--strict`.
169
183
 
170
184
  ## No Unload
171
185
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vforsh/argus",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/vforsh/argus.git",
@@ -26,9 +26,9 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@vforsh/argus-core": "workspace:*",
30
- "@vforsh/argus-plugin-api": "workspace:*",
31
- "@vforsh/argus-watcher": "workspace:*",
29
+ "@vforsh/argus-core": "^0.1.11",
30
+ "@vforsh/argus-plugin-api": "^0.1.4",
31
+ "@vforsh/argus-watcher": "^0.1.16",
32
32
  "commander": "14.0.2",
33
33
  "esbuild": "0.25.12",
34
34
  "prettier": "3.7.4"