sneakoscope 1.18.6 → 1.18.7

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 (100) hide show
  1. package/README.md +32 -13
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/crates/sks-core/src/main.rs +1 -1
  5. package/dist/.sks-build-stamp.json +4 -4
  6. package/dist/bin/sks.js +1 -1
  7. package/dist/build-manifest.json +27 -9
  8. package/dist/cli/command-registry.js +2 -2
  9. package/dist/commands/codex-app.js +17 -2
  10. package/dist/commands/codex.js +3 -2
  11. package/dist/commands/dfix.d.ts +14 -0
  12. package/dist/commands/image-ux-review.d.ts +27 -0
  13. package/dist/commands/ppt.d.ts +20 -0
  14. package/dist/commands/tmux.d.ts +2 -0
  15. package/dist/core/agents/agent-codex-cockpit.d.ts +3 -0
  16. package/dist/core/agents/agent-command-surface.d.ts +5 -0
  17. package/dist/core/agents/agent-command-surface.js +7 -2
  18. package/dist/core/agents/agent-merge-coordinator.d.ts +14 -0
  19. package/dist/core/agents/agent-merge-coordinator.js +47 -0
  20. package/dist/core/agents/agent-orchestrator.d.ts +20 -0
  21. package/dist/core/agents/agent-orchestrator.js +31 -3
  22. package/dist/core/agents/agent-patch-apply-worker.d.ts +26 -0
  23. package/dist/core/agents/agent-patch-apply-worker.js +119 -0
  24. package/dist/core/agents/agent-patch-proof.d.ts +18 -0
  25. package/dist/core/agents/agent-patch-proof.js +21 -0
  26. package/dist/core/agents/agent-patch-queue.d.ts +24 -0
  27. package/dist/core/agents/agent-patch-queue.js +55 -0
  28. package/dist/core/agents/agent-patch-schema.d.ts +23 -0
  29. package/dist/core/agents/agent-patch-schema.js +41 -0
  30. package/dist/core/agents/agent-proof-evidence.d.ts +7 -0
  31. package/dist/core/agents/agent-proof-evidence.js +12 -1
  32. package/dist/core/agents/agent-runner-codex-exec.js +23 -15
  33. package/dist/core/agents/agent-schema.d.ts +7 -1
  34. package/dist/core/agents/route-collaboration-ledger.d.ts +20 -0
  35. package/dist/core/codex/codex-0-134-compat.d.ts +76 -0
  36. package/dist/core/codex/codex-0-134-compat.js +194 -0
  37. package/dist/core/codex/managed-proxy-env.d.ts +14 -0
  38. package/dist/core/codex/managed-proxy-env.js +50 -0
  39. package/dist/core/codex-adapter.js +2 -0
  40. package/dist/core/codex-app.d.ts +6 -1
  41. package/dist/core/codex-app.js +111 -8
  42. package/dist/core/codex-compat/codex-compat-report.d.ts +90 -4
  43. package/dist/core/codex-compat/codex-compat-report.js +39 -8
  44. package/dist/core/codex-compat/codex-version-policy.d.ts +9 -3
  45. package/dist/core/codex-compat/codex-version-policy.js +21 -12
  46. package/dist/core/codex-compat/codex-version.d.ts +2 -0
  47. package/dist/core/codex-compat/codex-version.js +4 -1
  48. package/dist/core/commands/basic-cli.d.ts +2 -0
  49. package/dist/core/commands/computer-use-command.js +31 -2
  50. package/dist/core/commands/dfix-command.d.ts +14 -0
  51. package/dist/core/commands/dfix-command.js +4 -0
  52. package/dist/core/commands/image-ux-review-command.d.ts +27 -0
  53. package/dist/core/commands/image-ux-review-command.js +41 -8
  54. package/dist/core/commands/mad-sks-command.js +65 -18
  55. package/dist/core/commands/ppt-command.d.ts +20 -0
  56. package/dist/core/commands/qa-loop-command.js +74 -10
  57. package/dist/core/commands/research-command.js +8 -3
  58. package/dist/core/commands/run-command.js +3 -3
  59. package/dist/core/commands/team-command.js +14 -4
  60. package/dist/core/computer-use-status.js +5 -5
  61. package/dist/core/decision-contract.js +2 -1
  62. package/dist/core/dfix.d.ts +14 -0
  63. package/dist/core/dfix.js +14 -0
  64. package/dist/core/feature-registry.js +10 -2
  65. package/dist/core/fsx.d.ts +1 -1
  66. package/dist/core/fsx.js +1 -1
  67. package/dist/core/hermes.js +12 -0
  68. package/dist/core/hooks-runtime.js +1 -1
  69. package/dist/core/image-ux-review/imagegen-adapter.js +16 -15
  70. package/dist/core/image-ux-review/recapture.js +9 -3
  71. package/dist/core/image-ux-review.d.ts +6 -0
  72. package/dist/core/image-ux-review.js +18 -9
  73. package/dist/core/imagegen/imagegen-capability.d.ts +21 -0
  74. package/dist/core/imagegen/imagegen-capability.js +50 -16
  75. package/dist/core/init.js +14 -15
  76. package/dist/core/mad-sks/permission-model.d.ts +3 -0
  77. package/dist/core/mad-sks/permission-model.js +3 -0
  78. package/dist/core/mcp/mcp-0-134-policy.d.ts +37 -0
  79. package/dist/core/mcp/mcp-0-134-policy.js +226 -0
  80. package/dist/core/openclaw.js +13 -1
  81. package/dist/core/pipeline-internals/runtime-core.js +11 -9
  82. package/dist/core/pipeline-internals/runtime-gates.js +9 -6
  83. package/dist/core/proof/route-finalizer.js +6 -5
  84. package/dist/core/proof/runtime-truth-matrix.d.ts +1 -1
  85. package/dist/core/proof/runtime-truth-matrix.js +23 -5
  86. package/dist/core/qa-loop.d.ts +4 -2
  87. package/dist/core/qa-loop.js +27 -17
  88. package/dist/core/questions.d.ts +1 -1
  89. package/dist/core/questions.js +3 -3
  90. package/dist/core/recallpulse.js +1 -1
  91. package/dist/core/routes.d.ts +9 -2
  92. package/dist/core/routes.js +47 -17
  93. package/dist/core/source-intelligence/codex-history-search.d.ts +26 -0
  94. package/dist/core/source-intelligence/codex-history-search.js +71 -0
  95. package/dist/core/tmux-ui.d.ts +2 -0
  96. package/dist/core/triwiki-attention.js +2 -2
  97. package/dist/core/version.d.ts +1 -1
  98. package/dist/core/version.js +1 -1
  99. package/dist/scripts/release-parallel-check.js +13 -0
  100. package/package.json +16 -1
package/README.md CHANGED
@@ -6,11 +6,17 @@ Sneakoscope Codex (`sks`) is a Codex CLI/App harness that makes repeatable Codex
6
6
 
7
7
  SKS does not try to clone every other harness. It focuses on one thing: making Codex work auditable, visual-evidence-bound, safety-gated, and reproducible through Completion Proof.
8
8
 
9
+ ## LLM Init Prompt for Hermes / OpenClaw Agent Builders
10
+
11
+ ```text
12
+ Set up this agent project with Sneakoscope Codex. Use [[mandarange/Sneakoscope-Codex](https://github.com/mandarange/Sneakoscope-Codex)] as the repo reference and [npm i -g sneakoscope] as the recommended global install command, then run the appropriate `sks` setup, doctor, Codex App, and proof checks for this repo. Keep generated SKS state out of source control unless documented, and record every version-facing change in CHANGELOG.md.
13
+ ```
14
+
9
15
  ![Sneakoscope Codex Trust Layer](docs/assets/sneakoscope-architecture-pipeline.jpg)
10
16
 
11
17
  ## Current Release
12
18
 
13
- SKS **1.18.6** closes the zero-gap runtime truth loop: proof policy now reports every runtime subsystem separately, trust reports surface those subsystem proof levels, runtime truth matrix evidence is generated from live release artifacts, cleanup verifies process/tree/tmux/temp/lock after-states, and MAD-SKS writes explicit Warp/tmux lane proof instead of implying UI visibility.
19
+ SKS **1.18.7** closes the Codex 0.134 ultra-stability loop: the release matrix now covers `--profile` as the primary selector, bounded local Codex history search, managed proxy propagation, MCP 0.134 environment/OAuth/schema/readOnlyHint policy, proof-safe parallel agent patches, runtime truth P6 rows, the 1.18.7 release gate audit, MAD-SKS as general scoped permission widening, and gpt-image-2 imagegen as a core evidence capability.
14
20
 
15
21
  ```bash
16
22
  sks mad-sks plan --target-root <path> --json
@@ -30,6 +36,13 @@ npm run agent:ast-aware-work-graph
30
36
  npm run proof:fake-vs-real-policy
31
37
  npm run proof:fake-real-policy-v2
32
38
  npm run release:runtime-truth-matrix
39
+ npm run codex:0.134-official-compat
40
+ npm run codex:profile-primary
41
+ npm run codex:managed-proxy-env
42
+ npm run mcp:0.134-modernization
43
+ npm run source-intelligence:codex-history-search
44
+ npm run agent:parallel-write-kernel
45
+ npm run release:gate-existence-audit
33
46
  npm run route:blackbox-realism
34
47
  npm run release:real-check
35
48
  npm run agent:backfill-route-blackbox
@@ -37,7 +50,7 @@ npm run team:actual-route-backfill
37
50
  npm run release:readiness
38
51
  ```
39
52
 
40
- Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release gate status lives in [docs/release-readiness.md](docs/release-readiness.md).
53
+ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md); every version-facing change should be recorded there before release. Current release gate status lives in [docs/release-readiness.md](docs/release-readiness.md).
41
54
 
42
55
  ## Documentation
43
56
 
@@ -74,7 +87,7 @@ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release
74
87
  - Fake vs real proof policy: [docs/fake-vs-real-proof-policy.md](docs/fake-vs-real-proof-policy.md)
75
88
  - Runtime truth matrix: [docs/runtime-truth-matrix.md](docs/runtime-truth-matrix.md)
76
89
  - Warp MAD tmux lanes: [docs/warp-mad-tmux-lanes.md](docs/warp-mad-tmux-lanes.md)
77
- - Migration 1.18.5 to 1.18.6: [docs/migration-1.18.5-to-1.18.6.md](docs/migration-1.18.5-to-1.18.6.md)
90
+ - Migration 1.18.6 to 1.18.7: [docs/migration-1.18.6-to-1.18.7.md](docs/migration-1.18.6-to-1.18.7.md)
78
91
  - Codex official Goal mode: [docs/codex-official-goal-mode.md](docs/codex-official-goal-mode.md)
79
92
  - Release parallel full coverage: [docs/release-parallel-full-coverage.md](docs/release-parallel-full-coverage.md)
80
93
  - Priority closure P0-P4: [docs/priority-closure-p0-p4.md](docs/priority-closure-p0-p4.md)
@@ -94,6 +107,8 @@ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release
94
107
 
95
108
  ## 60-second start
96
109
 
110
+ Recommended install: use the global npm package so `sks` and the Codex App `$` skills are refreshed together.
111
+
97
112
  ```sh
98
113
  npm i -g sneakoscope
99
114
  sks root
@@ -117,7 +132,7 @@ sks rust smoke --json
117
132
 
118
133
  ## Install Options
119
134
 
120
- Install globally, then run `sks` from either a project or any global shell location:
135
+ Recommended: install globally with `npm i -g sneakoscope`, then run `sks` from either a project or any global shell location:
121
136
 
122
137
  ```sh
123
138
  npm i -g sneakoscope
@@ -125,7 +140,7 @@ sks root
125
140
  sks doctor
126
141
  ```
127
142
 
128
- `npm i -g sneakoscope` automatically refreshes the `sks` command shim, global Codex App `$` skills, and SKS bootstrap surface. When the install is run from a project, postinstall bootstraps that project. When it is run outside a repo/project marker, postinstall bootstraps the per-user global runtime root instead of writing `.sneakoscope` into a random current directory. `sks root` tells you which root SKS will use.
143
+ `npm i -g sneakoscope` is the recommended install path. It automatically refreshes the `sks` command shim, global Codex App `$` skills, and SKS bootstrap surface. When the install is run from a project, postinstall bootstraps that project. When it is run outside a repo/project marker, postinstall bootstraps the per-user global runtime root instead of writing `.sneakoscope` into a random current directory. `sks root` tells you which root SKS will use.
129
144
 
130
145
  If you only want a one-shot run without keeping `sks` installed globally:
131
146
 
@@ -186,7 +201,7 @@ The default `sks` runtime checks npm for newer `sneakoscope` and `@openai/codex`
186
201
 
187
202
  ### Global Install
188
203
 
189
- Use this when you want `sks` available from any repo:
204
+ Use this recommended path when you want `sks` available from any repo:
190
205
 
191
206
  ```sh
192
207
  npm i -g sneakoscope
@@ -280,7 +295,7 @@ sks codex-lb repair
280
295
  sks
281
296
  ```
282
297
 
283
- Bare `sks` can also prompt for codex-lb auth; SKS stores the base URL/key in `~/.codex/sks-codex-lb.env`, writes the codex-lb Codex CLI / IDE Extension provider block into `~/.codex/config.toml` for Codex App routing, loads the provider env key for tmux launches, and syncs the macOS user launch environment so the Codex App can see `CODEX_LB_API_KEY` after restart. If the provider block disappears but the stored env file is still recoverable, bare `sks`, npm postinstall upgrades, `sks doctor --fix`, and `sks codex-lb repair` restore it with `env_key = "CODEX_LB_API_KEY"`, `supports_websockets = true`, and `requires_openai_auth = false`; PPT/imagegen bridge checks treat that env-key provider as configured without requiring OpenAI OAuth. If an older SKS release left the codex-lb dashboard key only in the shared Codex `auth.json` login cache, SKS migrates that key back into `~/.codex/sks-codex-lb.env` when a codex-lb provider or env base URL is already recoverable. It does not rewrite the shared Codex `auth.json` login cache by default; set `SKS_CODEX_LB_SYNC_CODEX_LOGIN=1` only if you intentionally want the old API-key login-cache behavior. When codex-lb is active, SKS opens a fresh `sks-codex-lb-*` tmux session and sweeps older detached codex-lb sessions for the same repo before launch so stale Responses API chains are not reused. Configured launch paths run a response-chain health check. `previous_response_not_found` is treated as a stateless-LB warning and keeps codex-lb active. Hard failures are surfaced to the user; SKS only bypasses codex-lb when the user chooses OAuth fallback or `SKS_CODEX_LB_AUTOBYPASS=1` is set.
298
+ Bare `sks` can also prompt for codex-lb auth; SKS stores the base URL/key in `~/.codex/sks-codex-lb.env`, writes the codex-lb Codex CLI / IDE Extension provider block into `~/.codex/config.toml` for Codex App routing, loads the provider env key for tmux launches, and syncs the macOS user launch environment so the Codex App can see `CODEX_LB_API_KEY` after restart. If the provider block disappears but the stored env file is still recoverable, bare `sks`, npm postinstall upgrades, `sks doctor --fix`, and `sks codex-lb repair` restore it with `env_key = "CODEX_LB_API_KEY"`, `supports_websockets = true`, and `requires_openai_auth = false`; imagegen checks may record this provider as configured codex-lb routing, but it is not accepted as official Codex App `$imagegen` evidence. If an older SKS release left the codex-lb dashboard key only in the shared Codex `auth.json` login cache, SKS migrates that key back into `~/.codex/sks-codex-lb.env` when a codex-lb provider or env base URL is already recoverable. It does not rewrite the shared Codex `auth.json` login cache by default; set `SKS_CODEX_LB_SYNC_CODEX_LOGIN=1` only if you intentionally want the old API-key login-cache behavior. When codex-lb is active, SKS opens a fresh `sks-codex-lb-*` tmux session and sweeps older detached codex-lb sessions for the same repo before launch so stale Responses API chains are not reused. Configured launch paths run a response-chain health check. `previous_response_not_found` is treated as a stateless-LB warning and keeps codex-lb active. Hard failures are surfaced to the user; SKS only bypasses codex-lb when the user chooses OAuth fallback or `SKS_CODEX_LB_AUTOBYPASS=1` is set.
284
299
 
285
300
  If codex-lb provider auth drifts after launch/reinstall, run `sks doctor --fix` or `sks codex-lb repair`; to replace it, run `sks codex-lb reconfigure --host <domain> --api-key <key>`.
286
301
 
@@ -317,10 +332,10 @@ This flips `model_provider` away from `codex-lb` in the top-level Codex App conf
317
332
 
318
333
  ```sh
319
334
  sks --mad
320
- sks --mad --yes
335
+ sks --mad --allow-package-install --allow-service-control --allow-network --yes
321
336
  ```
322
337
 
323
- This syncs existing codex-lb provider auth, creates/uses the `sks-mad-high` full-access profile, opens the MAD-SKS permission gate for that tmux run, and launches a single Codex CLI pane. The session recreates the named session so stale split-pane MAD sessions collapse back to one pane. Catastrophic database wipe/all-row/project-management safeguards remain active, and the pipeline contract still forbids unrequested fallback implementation code.
338
+ This syncs existing codex-lb provider auth, creates/uses the `sks-mad-high` high-power maintenance profile, opens the MAD-SKS permission gate for that tmux run, and launches a single Codex CLI pane. Bare `sks --mad` grants target-project file and shell scope only; add explicit `--allow-*` flags for packages, services, network, Computer Use, browser use, generated assets, file permissions, DB writes, or other high-risk scopes. MAD-SKS is not a DB-only unlock: it is explicit user authorization to widen approved target-project scopes. The session recreates the named session so stale split-pane MAD sessions collapse back to one pane. Catastrophic database wipe/all-row/project-management safeguards remain active, and the pipeline contract still forbids unrequested fallback implementation code.
324
339
 
325
340
  Before launching, SKS checks npm for a newer `sneakoscope`; answer `y` to update or `n` to continue. Use `--yes` to approve missing dependency installs automatically.
326
341
 
@@ -364,6 +379,7 @@ Effort is assigned per agent. Simple read-only/docs slices can run low, ordinary
364
379
  ```sh
365
380
  sks qa-loop prepare "http://localhost:3000"
366
381
  sks qa-loop run latest --max-cycles 2
382
+ sks codex-app chrome-extension --json
367
383
  sks goal create "persist this migration workflow"
368
384
  sks research prepare "evaluate this approach"
369
385
  sks research run latest --max-cycles 12 --cycle-timeout-minutes 120
@@ -397,7 +413,7 @@ sks code-structure scan --json
397
413
 
398
414
  ### Ambiguity Questions
399
415
 
400
- Clarification asks only for ambiguity that changes execution; predictable defaults are inferred and sealed. `sks skill-dream` records cheap counters and periodically writes advisory skill reports. `$Goal` controls native `/goal` persistence without replacing the selected execution route. `$Computer-Use` / `$CU` is the fast Codex Computer Use lane for UI/browser/visual work.
416
+ Clarification asks only for ambiguity that changes execution; predictable defaults are inferred and sealed. `sks skill-dream` records cheap counters and periodically writes advisory skill reports. `$Goal` controls native `/goal` persistence without replacing the selected execution route. Web, browser, localhost, website, webapp, and web-based app verification use the official Codex Chrome Extension path first; if it is not installed/enabled, SKS stops and asks the user to set it up before resuming. `$Computer-Use` / `$CU` is now reserved for native macOS, desktop-app, OS-settings, and non-web visual work.
401
417
 
402
418
  ### Create A Presentation
403
419
 
@@ -419,6 +435,7 @@ After installing, run:
419
435
  ```sh
420
436
  sks bootstrap
421
437
  sks codex-app check
438
+ sks codex-app chrome-extension --json
422
439
  sks codex-app remote-control --status
423
440
  sks dollar-commands
424
441
  ```
@@ -429,9 +446,11 @@ For headless remotely controllable Codex App/server sessions on Codex CLI 0.130.
429
446
  sks codex-app remote-control -- --help
430
447
  ```
431
448
 
432
- `sks codex-app check` reports whether the installed Codex CLI is new enough, whether the required app flags are visible, whether Fast/speed-selector config is unlocked, whether Codex App Git Actions can use Commit, Push, Commit and Push, and PR flows, and whether installed OpenAI default plugins such as Browser, Chrome, Computer Use, Documents, Presentations, Spreadsheets, and LaTeX are enabled. When codex-lb is configured, SKS keeps it selected as the top-level Codex App provider while still preserving required app flags and plugin settings. Codex CLI 0.130.0+ app-server/remote-control threads can pick up config changes live; older CLI/TUI sessions should still be restarted after `.codex/config.toml` or MCP/plugin changes.
449
+ `sks codex-app check` reports whether the installed Codex CLI is new enough, whether the required app flags are visible, whether Fast/speed-selector config is unlocked, whether Codex App Git Actions can use Commit, Push, Commit and Push, and PR flows, whether the Codex Chrome Extension path is ready for web/browser/webapp verification, and whether installed OpenAI default plugins such as Browser, Chrome, Computer Use, Documents, Presentations, Spreadsheets, and LaTeX are enabled. `sks codex-app chrome-extension --json` is the rapid preflight for web QA/UX/browser routes. When codex-lb is configured, SKS keeps it selected as the top-level Codex App provider while still preserving required app flags and plugin settings. Codex CLI 0.130.0+ app-server/remote-control threads can pick up config changes live; older CLI/TUI sessions should still be restarted after `.codex/config.toml` or MCP/plugin changes.
450
+
451
+ For web-related verification, SKS follows the official Codex Chrome Extension setup path first: https://developers.openai.com/codex/app/chrome-extension. `$QA-LOOP`, `$UX-Review`, `$Image-UX-Review`, browser smoke, authenticated web checks, localhost checks, and web visual review must halt quickly if that extension is missing or disabled. Only after the user says the extension setup is complete should the pipeline resume. Codex Computer Use is for native Mac/non-web targets only; it must not be used as browser/web-app verification evidence.
433
452
 
434
- Image-review routes are intentionally strict. `$Image-UX-Review`, `$UX-Review`, `$Visual-Review`, and `$UI-UX-Review` require real Codex App `$imagegen`/`gpt-image-2` generated annotated review images before `image-ux-review-gate.json` can pass; disabled or missing `image_generation` remains a blocker that `sks codex-app check` and selftest cover.
453
+ Imagegen is a core SKS capability, not a decorative add-on. `$Image-UX-Review`, `$UX-Review`, `$Visual-Review`, `$UI-UX-Review`, and PPT generated-review paths require real Codex App `$imagegen`/`gpt-image-2` output before full visual verification can pass. For newest-model image requests, prompts should say "Use ChatGPT Images 2.0 / GPT Image 2.0 with gpt-image-2" while still invoking Codex App `$imagegen` when live generation is needed. Use `imagegen-source-scout` when current official docs plus X/social prompt-workflow signals are needed; social sources are prompt heuristics only, not capability or evidence specs. `npm run imagegen:capability` checks that the official Codex App imagegen surface is visible and records that capability detection is not output proof; OpenAI API, Responses image-generation, codex-lb, or `CODEX_LB_API_KEY` fallbacks are non-Codex paths and do not satisfy Codex App generated-image evidence unless a separate API fallback task is explicitly requested. The README architecture asset uses the same rule: run `npm run imagegen:readme-architecture:prompt` to print/write the official prompt, generate the image in Codex App `$imagegen`, then rerun `npm run imagegen:readme-architecture -- --output <path>` after Codex App creates a real gpt-image-2 output. When exactly one current generated_images candidate exists after the prompt, `npm run imagegen:readme-architecture -- --auto-pick-latest` can select it automatically. To let the verifier wait while Codex App writes the file, use `npm run imagegen:readme-architecture -- --wait-ms <milliseconds>`; it still accepts only one current candidate under `$CODEX_HOME/generated_images`. Env forms such as `SKS_CODEX_APP_IMAGEGEN_OUTPUT=<path>` remain supported for automation. Use the selected file directly under `$CODEX_HOME/generated_images`; moved or copied files are not accepted as provenance evidence. Disabled or missing `image_generation` remains a blocker that `sks codex-app check`, `npm run imagegen:capability`, and selftest cover.
435
454
 
436
455
  Then open Codex App and use prompt commands directly in the chat. Examples:
437
456
 
@@ -579,7 +598,7 @@ sks codex-app check
579
598
  codex mcp list
580
599
  ```
581
600
 
582
- Codex App workflows need the app installed. UI/browser evidence requires first-party Codex Computer Use, and generated raster/image-review evidence requires real `$imagegen`/`gpt-image-2` output. After setup/upgrade, start a fresh thread so Codex reloads plugin tools.
601
+ Codex App workflows need the app installed. Web/browser evidence requires the Codex Chrome Extension path, native Mac/non-web visual evidence requires first-party Codex Computer Use, and generated raster/image-review evidence requires real `$imagegen`/`gpt-image-2` output. After setup/upgrade, start a fresh thread so Codex reloads plugin tools.
583
602
 
584
603
  ### Codex App commit/push is blocked
585
604
 
@@ -76,7 +76,7 @@ dependencies = [
76
76
 
77
77
  [[package]]
78
78
  name = "sks-core"
79
- version = "1.18.6"
79
+ version = "1.18.7"
80
80
  dependencies = [
81
81
  "serde_json",
82
82
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sks-core"
3
- version = "1.18.6"
3
+ version = "1.18.7"
4
4
  edition = "2021"
5
5
 
6
6
  [dependencies]
@@ -4,7 +4,7 @@ use std::io::{self, Read, Seek, SeekFrom};
4
4
  fn main() {
5
5
  let mut args = std::env::args().skip(1);
6
6
  match args.next().as_deref() {
7
- Some("--version") => println!("sks-rs 1.18.6"),
7
+ Some("--version") => println!("sks-rs 1.18.7"),
8
8
  Some("compact-info") => {
9
9
  let mut input = String::new();
10
10
  let _ = io::stdin().read_to_string(&mut input);
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": "sks.dist-build-stamp.v1",
3
3
  "package_name": "sneakoscope",
4
- "package_version": "1.18.6",
5
- "source_digest": "d45147f0f01dfabdab71a2e03ea484173d6de7e64e58958d1b73d31f8719ae5c",
6
- "source_file_count": 1435,
7
- "built_at_source_time": 1779844415377
4
+ "package_version": "1.18.7",
5
+ "source_digest": "49e153f303c7d5abf79e2f2fe77ecfd9215172f34b2fb944fd34095aa9bf638c",
6
+ "source_file_count": 1466,
7
+ "built_at_source_time": 1779875860601
8
8
  }
package/dist/bin/sks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const FAST_PACKAGE_VERSION = '1.18.6';
2
+ const FAST_PACKAGE_VERSION = '1.18.7';
3
3
  const args = process.argv.slice(2);
4
4
  try {
5
5
  if (args[0] === '--version' || args[0] === '-v' || args[0] === 'version') {
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "schema": "sks.dist-build.v2",
3
- "version": "1.18.6",
4
- "package_version": "1.18.6",
3
+ "version": "1.18.7",
4
+ "package_version": "1.18.7",
5
5
  "typescript": true,
6
6
  "mjs_runtime_files": 0,
7
- "compiled_file_count": 878,
8
- "compiled_js_count": 439,
9
- "compiled_dts_count": 439,
10
- "source_digest": "d45147f0f01dfabdab71a2e03ea484173d6de7e64e58958d1b73d31f8719ae5c",
11
- "source_file_count": 1435,
12
- "source_files_hash": "d1b0087b824861574256c5a1f9af243009a1ac33006649d562e5905cba8b829d",
13
- "source_list_hash": "d1b0087b824861574256c5a1f9af243009a1ac33006649d562e5905cba8b829d",
7
+ "compiled_file_count": 896,
8
+ "compiled_js_count": 448,
9
+ "compiled_dts_count": 448,
10
+ "source_digest": "49e153f303c7d5abf79e2f2fe77ecfd9215172f34b2fb944fd34095aa9bf638c",
11
+ "source_file_count": 1466,
12
+ "source_files_hash": "743d83c31ee39e65ac8d73c42993b5baffed6474210ec913259194ca1e58900f",
13
+ "source_list_hash": "743d83c31ee39e65ac8d73c42993b5baffed6474210ec913259194ca1e58900f",
14
14
  "src_mjs_runtime_files": 0,
15
15
  "dist_stamp_schema": "sks.dist-build-stamp.v1",
16
16
  "files": [
@@ -214,12 +214,22 @@
214
214
  "core/agents/agent-ledger-schemas.js",
215
215
  "core/agents/agent-lifecycle.d.ts",
216
216
  "core/agents/agent-lifecycle.js",
217
+ "core/agents/agent-merge-coordinator.d.ts",
218
+ "core/agents/agent-merge-coordinator.js",
217
219
  "core/agents/agent-message-bus.d.ts",
218
220
  "core/agents/agent-message-bus.js",
219
221
  "core/agents/agent-orchestrator.d.ts",
220
222
  "core/agents/agent-orchestrator.js",
221
223
  "core/agents/agent-output-validator.d.ts",
222
224
  "core/agents/agent-output-validator.js",
225
+ "core/agents/agent-patch-apply-worker.d.ts",
226
+ "core/agents/agent-patch-apply-worker.js",
227
+ "core/agents/agent-patch-proof.d.ts",
228
+ "core/agents/agent-patch-proof.js",
229
+ "core/agents/agent-patch-queue.d.ts",
230
+ "core/agents/agent-patch-queue.js",
231
+ "core/agents/agent-patch-schema.d.ts",
232
+ "core/agents/agent-patch-schema.js",
223
233
  "core/agents/agent-persona.d.ts",
224
234
  "core/agents/agent-persona.js",
225
235
  "core/agents/agent-plan.d.ts",
@@ -358,8 +368,12 @@
358
368
  "core/codex-lb/codex-lb-setup.js",
359
369
  "core/codex-model-guard.d.ts",
360
370
  "core/codex-model-guard.js",
371
+ "core/codex/codex-0-134-compat.d.ts",
372
+ "core/codex/codex-0-134-compat.js",
361
373
  "core/codex/codex-web-search-adapter.d.ts",
362
374
  "core/codex/codex-web-search-adapter.js",
375
+ "core/codex/managed-proxy-env.d.ts",
376
+ "core/codex/managed-proxy-env.js",
363
377
  "core/codex/official-goal-mode.d.ts",
364
378
  "core/codex/official-goal-mode.js",
365
379
  "core/commands/agent-command.d.ts",
@@ -614,6 +628,8 @@
614
628
  "core/mad-sks/write-guard.js",
615
629
  "core/managed-paths.d.ts",
616
630
  "core/managed-paths.js",
631
+ "core/mcp/mcp-0-134-policy.d.ts",
632
+ "core/mcp/mcp-0-134-policy.js",
617
633
  "core/mcp/xai-mcp-detector.d.ts",
618
634
  "core/mcp/xai-mcp-detector.js",
619
635
  "core/mcp/xai-search-adapter.d.ts",
@@ -773,6 +789,8 @@
773
789
  "core/session/project-namespace.js",
774
790
  "core/skill-forge.d.ts",
775
791
  "core/skill-forge.js",
792
+ "core/source-intelligence/codex-history-search.d.ts",
793
+ "core/source-intelligence/codex-history-search.js",
776
794
  "core/source-intelligence/source-intelligence-policy.d.ts",
777
795
  "core/source-intelligence/source-intelligence-policy.js",
778
796
  "core/source-intelligence/source-intelligence-proof.d.ts",
@@ -122,8 +122,8 @@ export const COMMANDS = {
122
122
  'ux-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
123
123
  'visual-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
124
124
  'ui-ux-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
125
- 'computer-use': entry('beta', 'Record Computer Use visual evidence', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
126
- cu: entry('beta', 'Alias for Computer Use', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
125
+ 'computer-use': entry('beta', 'Record native Mac/non-web Computer Use visual evidence', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
126
+ cu: entry('beta', 'Alias for native Computer Use', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
127
127
  context7: entry('beta', 'Context7 checks and docs', 'dist/cli/context7-command.js', subcommand(() => import('./context7-command.js'), 'context7Command', 'dist/cli/context7-command.js', 'check')),
128
128
  recallpulse: entry('labs', 'RecallPulse evidence route', 'dist/commands/recallpulse.js', directCommand(() => import('../commands/recallpulse.js'), 'dist/commands/recallpulse.js')),
129
129
  pipeline: entry('beta', 'Inspect pipeline missions', 'dist/commands/pipeline.js', directCommand(() => import('../commands/pipeline.js'), 'dist/commands/pipeline.js')),
@@ -1,11 +1,26 @@
1
1
  import { flag } from '../cli/args.js';
2
2
  import { printJson } from '../cli/output.js';
3
- import { codexAccessTokenStatus, codexAppIntegrationStatus, formatCodexAppStatus } from '../core/codex-app.js';
3
+ import { codexAccessTokenStatus, codexAppIntegrationStatus, codexChromeExtensionStatus, formatCodexAppStatus } from '../core/codex-app.js';
4
4
  import { codexAppRemoteControlCommand } from '../cli/codex-app-command.js';
5
5
  export async function run(_command, args = []) {
6
6
  const action = args[0] || 'check';
7
7
  if (action === 'remote-control' || action === 'remote')
8
8
  return codexAppRemoteControlCommand(args.slice(1));
9
+ if (action === 'chrome-extension' || action === 'chrome') {
10
+ const status = await codexChromeExtensionStatus();
11
+ if (flag(args, '--json')) {
12
+ printJson(status);
13
+ if (!status.ok)
14
+ process.exitCode = 1;
15
+ return;
16
+ }
17
+ console.log(`Codex Chrome Extension: ${status.ok ? 'available' : status.status}`);
18
+ for (const line of status.guidance || [])
19
+ console.log(`- ${line}`);
20
+ if (!status.ok)
21
+ process.exitCode = 1;
22
+ return;
23
+ }
9
24
  if (action === 'pat') {
10
25
  const status = codexAccessTokenStatus();
11
26
  if (flag(args, '--json'))
@@ -29,7 +44,7 @@ export async function run(_command, args = []) {
29
44
  process.exitCode = 1;
30
45
  return;
31
46
  }
32
- console.error('Usage: sks codex-app check|status|pat status|remote-control [--json]');
47
+ console.error('Usage: sks codex-app check|status|chrome-extension|pat status|remote-control [--json]');
33
48
  process.exitCode = 1;
34
49
  }
35
50
  //# sourceMappingURL=codex-app.js.map
@@ -1,4 +1,4 @@
1
- import { flag } from '../cli/args.js';
1
+ import { flag, readOption } from '../cli/args.js';
2
2
  import { printJson } from '../cli/output.js';
3
3
  import { codexCompatibilityReport, codexDoctorReport } from '../core/codex-compat/codex-compat-report.js';
4
4
  import { codexVersionReport } from '../core/codex-compat/codex-version.js';
@@ -6,7 +6,8 @@ import { codexSchemaSnapshotReport } from '../core/codex-compat/codex-schema-sna
6
6
  export async function run(_command, args = []) {
7
7
  const action = args[0] || 'compatibility';
8
8
  if (action === 'compatibility' || action === 'compat') {
9
- const result = await codexCompatibilityReport();
9
+ const requiredBaseline = readOption(args, '--require', null);
10
+ const result = await codexCompatibilityReport({ requiredBaseline, require: requiredBaseline });
10
11
  if (flag(args, '--json'))
11
12
  return printJson(result);
12
13
  console.log(`Codex compatibility: ${result.ok ? result.status : 'blocked'} (${result.required_baseline})`);
@@ -103,6 +103,13 @@ export declare function run(command: any, args?: any): Promise<void | {
103
103
  };
104
104
  selected_template: import("../core/dfix/patch-templates.js").DfixPatchTemplate | null;
105
105
  mode: string;
106
+ route_parallel_write: {
107
+ write_mode: any;
108
+ apply_patches: boolean;
109
+ dry_run_patches: boolean;
110
+ max_write_agents: number;
111
+ route_level_flags_wired: boolean;
112
+ };
106
113
  target_file: any;
107
114
  find_text_present: boolean;
108
115
  replace_text_present: boolean;
@@ -154,6 +161,13 @@ export declare function run(command: any, args?: any): Promise<void | {
154
161
  created_at: string;
155
162
  explicit_apply_opt_in: boolean;
156
163
  apply_opt_in: boolean;
164
+ route_parallel_write: {
165
+ write_mode: any;
166
+ apply_patches: boolean;
167
+ dry_run_patches: boolean;
168
+ max_write_agents: number;
169
+ route_level_flags_wired: boolean;
170
+ };
157
171
  patch_mode: any;
158
172
  patch_result_present: boolean;
159
173
  patch_applied: any;
@@ -46,6 +46,8 @@ export declare function run(command: any, args?: any): Promise<void | {
46
46
  original_resolution_required: boolean;
47
47
  local_only_default: boolean;
48
48
  accepted_sources: string[];
49
+ web_capture_doc: string;
50
+ web_verification_policy: string;
49
51
  privacy: string;
50
52
  };
51
53
  image_generation_review: {
@@ -298,6 +300,7 @@ export declare function run(command: any, args?: any): Promise<void | {
298
300
  contract_hash: any;
299
301
  real_source_screenshot_present: boolean;
300
302
  computer_use_or_user_screenshot_source: any;
303
+ official_or_user_screenshot_source: any;
301
304
  gpt_image_2_callout_generated: boolean;
302
305
  generated_image_ingested: boolean;
303
306
  callout_extraction_schema_valid: boolean;
@@ -627,6 +630,20 @@ export declare function run(command: any, args?: any): Promise<void | {
627
630
  status: string;
628
631
  }[];
629
632
  };
633
+ parallel_write_policy: {
634
+ schema: string;
635
+ generated_at: string;
636
+ route: string;
637
+ route_command: string;
638
+ write_mode: "off" | "proof-safe" | "parallel" | "serial";
639
+ apply_patches: boolean;
640
+ dry_run_patches: boolean;
641
+ max_write_agents: number;
642
+ readonly: boolean;
643
+ patch_queue_required: boolean;
644
+ patch_apply_mode: string;
645
+ route_level_flags_wired: boolean;
646
+ };
630
647
  proof: {
631
648
  schema: string;
632
649
  ok: boolean;
@@ -638,6 +655,12 @@ export declare function run(command: any, args?: any): Promise<void | {
638
655
  route_command: string;
639
656
  route_blackbox_kind: string;
640
657
  real_route_command_used: boolean;
658
+ parallel_write_policy: string;
659
+ parallel_write_route_flags_wired: boolean;
660
+ parallel_write_mode: any;
661
+ parallel_write_apply_patches: boolean;
662
+ parallel_write_dry_run_patches: boolean;
663
+ parallel_write_max_write_agents: number;
641
664
  real_parallel_claim: boolean;
642
665
  fake_backend_disclaimer: string | null;
643
666
  agent_count: any;
@@ -796,6 +819,8 @@ export declare function run(command: any, args?: any): Promise<void | {
796
819
  original_resolution_required: boolean;
797
820
  local_only_default: boolean;
798
821
  accepted_sources: string[];
822
+ web_capture_doc: string;
823
+ web_verification_policy: string;
799
824
  privacy: string;
800
825
  };
801
826
  image_generation_review: {
@@ -1048,6 +1073,7 @@ export declare function run(command: any, args?: any): Promise<void | {
1048
1073
  contract_hash: any;
1049
1074
  real_source_screenshot_present: boolean;
1050
1075
  computer_use_or_user_screenshot_source: any;
1076
+ official_or_user_screenshot_source: any;
1051
1077
  gpt_image_2_callout_generated: boolean;
1052
1078
  generated_image_ingested: boolean;
1053
1079
  callout_extraction_schema_valid: boolean;
@@ -1188,6 +1214,7 @@ export declare function run(command: any, args?: any): Promise<void | {
1188
1214
  contract_hash: any;
1189
1215
  real_source_screenshot_present: boolean;
1190
1216
  computer_use_or_user_screenshot_source: any;
1217
+ official_or_user_screenshot_source: any;
1191
1218
  gpt_image_2_callout_generated: boolean;
1192
1219
  generated_image_ingested: boolean;
1193
1220
  callout_extraction_schema_valid: boolean;
@@ -479,6 +479,20 @@ export declare function run(command: any, args?: any): Promise<void | {
479
479
  status: string;
480
480
  }[];
481
481
  };
482
+ parallel_write_policy: {
483
+ schema: string;
484
+ generated_at: string;
485
+ route: string;
486
+ route_command: string;
487
+ write_mode: "off" | "proof-safe" | "parallel" | "serial";
488
+ apply_patches: boolean;
489
+ dry_run_patches: boolean;
490
+ max_write_agents: number;
491
+ readonly: boolean;
492
+ patch_queue_required: boolean;
493
+ patch_apply_mode: string;
494
+ route_level_flags_wired: boolean;
495
+ };
482
496
  proof: {
483
497
  schema: string;
484
498
  ok: boolean;
@@ -490,6 +504,12 @@ export declare function run(command: any, args?: any): Promise<void | {
490
504
  route_command: string;
491
505
  route_blackbox_kind: string;
492
506
  real_route_command_used: boolean;
507
+ parallel_write_policy: string;
508
+ parallel_write_route_flags_wired: boolean;
509
+ parallel_write_mode: any;
510
+ parallel_write_apply_patches: boolean;
511
+ parallel_write_dry_run_patches: boolean;
512
+ parallel_write_max_write_agents: number;
493
513
  real_parallel_claim: boolean;
494
514
  fake_backend_disclaimer: string | null;
495
515
  agent_count: any;
@@ -37,6 +37,7 @@ export declare function run(_command: any, args?: any): Promise<void | {
37
37
  plugins: {
38
38
  computer_use_cache: string | null;
39
39
  browser_use_cache: string | null;
40
+ chrome_cache: string | null;
40
41
  default_plugins: {
41
42
  ok: boolean;
42
43
  checked: boolean;
@@ -60,6 +61,7 @@ export declare function run(_command: any, args?: any): Promise<void | {
60
61
  fast_mode_config_ok: boolean;
61
62
  };
62
63
  };
64
+ chrome_extension: any;
63
65
  guidance: any[];
64
66
  }>;
65
67
  //# sourceMappingURL=tmux.d.ts.map
@@ -11,6 +11,9 @@ export type CodexCockpitHookPayload = {
11
11
  session_id?: string;
12
12
  transcript_path?: string | null;
13
13
  agent_transcript_path?: string | null;
14
+ slot_id?: string | null;
15
+ generation_index?: number | null;
16
+ persona_id?: string | null;
14
17
  last_assistant_message?: string | null;
15
18
  stop_hook_active?: boolean;
16
19
  turn_id?: string;
@@ -13,6 +13,11 @@ export declare function parseAgentCommandArgs(command: string, args?: string[]):
13
13
  mock: boolean;
14
14
  real: boolean;
15
15
  readonly: boolean;
16
+ profile: string | null;
17
+ writeMode: "off" | "proof-safe" | "parallel" | "serial";
18
+ applyPatches: boolean;
19
+ dryRunPatches: boolean;
20
+ maxWriteAgents: number;
16
21
  apply: boolean;
17
22
  dryRun: boolean;
18
23
  drain: boolean;
@@ -16,6 +16,11 @@ export function parseAgentCommandArgs(command, args = []) {
16
16
  const mock = hasFlag(args, '--mock') || backend === 'fake';
17
17
  const real = hasFlag(args, '--real');
18
18
  const readonly = hasFlag(args, '--readonly') || hasFlag(args, '--read-only');
19
+ const profile = String(readOption(args, '--profile', '') || '') || null;
20
+ const writeMode = String(readOption(args, '--write-mode', hasFlag(args, '--parallel-write') ? 'parallel' : 'off'));
21
+ const applyPatches = hasFlag(args, '--apply-patches');
22
+ const dryRunPatches = hasFlag(args, '--dry-run-patches') || hasFlag(args, '--dryrun-patches');
23
+ const maxWriteAgents = Number(readOption(args, '--max-write-agents', Math.max(1, Math.min(concurrency, agents))));
19
24
  const apply = hasFlag(args, '--apply');
20
25
  const dryRun = hasFlag(args, '--dry-run') || hasFlag(args, '--dryrun');
21
26
  const drain = hasFlag(args, '--drain');
@@ -23,14 +28,14 @@ export function parseAgentCommandArgs(command, args = []) {
23
28
  const graceMs = Number(readOption(args, '--grace-ms', 750));
24
29
  const killEscalation = hasFlag(args, '--kill-escalation') || !hasFlag(args, '--no-kill-escalation');
25
30
  const codexApp = hasFlag(args, '--codex-app');
26
- const positionals = positionalArgs(rest, new Set(['--agents', '--target-active-slots', '--work-items', '--minimum-work-items', '--max-queue-expansion', '--concurrency', '--backend', '--route', '--mission', '--mission-id', '--agent', '--lane', '--stale-ms', '--grace-ms']));
31
+ const positionals = positionalArgs(rest, new Set(['--agents', '--target-active-slots', '--work-items', '--minimum-work-items', '--max-queue-expansion', '--concurrency', '--backend', '--route', '--mission', '--mission-id', '--agent', '--lane', '--stale-ms', '--grace-ms', '--profile', '--write-mode', '--max-write-agents']));
27
32
  const missionDefault = action === 'run' || action === 'spawn' || action === 'plan' ? '' : 'latest';
28
33
  const positionalMission = action === 'run' || action === 'spawn' || action === 'plan' ? '' : (positionals[0] || '');
29
34
  const missionId = String(readOption(args, '--mission', readOption(args, '--mission-id', positionalMission || missionDefault)));
30
35
  const lane = String(readOption(args, '--agent', readOption(args, '--lane', '')));
31
36
  const promptPositionals = positionalMission ? positionals.slice(1) : positionals;
32
37
  const prompt = promptPositionals.join(' ').trim() || 'Native agent run';
33
- return { command, action, prompt, route, agents, targetActiveSlots, desiredWorkItemCount, minimumWorkItems, maxQueueExpansion, concurrency, backend, mock, real, readonly, apply, dryRun, drain, staleMs, graceMs, killEscalation, json, missionId, lane, codexApp };
38
+ return { command, action, prompt, route, agents, targetActiveSlots, desiredWorkItemCount, minimumWorkItems, maxQueueExpansion, concurrency, backend, mock, real, readonly, profile, writeMode, applyPatches, dryRunPatches, maxWriteAgents, apply, dryRun, drain, staleMs, graceMs, killEscalation, json, missionId, lane, codexApp };
34
39
  }
35
40
  function hasFlag(args, flag) {
36
41
  return args.includes(flag);
@@ -0,0 +1,14 @@
1
+ import type { AgentPatchEnvelope } from './agent-patch-schema.js';
2
+ export declare const AGENT_MERGE_COORDINATOR_SCHEMA = "sks.agent-merge-coordinator.v1";
3
+ export declare function coordinateAgentPatchMerge(envelopes: AgentPatchEnvelope[]): {
4
+ schema: string;
5
+ ok: boolean;
6
+ merge_order: string[];
7
+ touched_files: string[];
8
+ conflicts: {
9
+ file: string;
10
+ agents: string[];
11
+ }[];
12
+ blockers: string[];
13
+ };
14
+ //# sourceMappingURL=agent-merge-coordinator.d.ts.map