@outerlayer/cli 0.34.0-next.20261026214555 → 0.34.0-next.20261026230708

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 (52) hide show
  1. package/README.md +12 -4
  2. package/dist/{build-BBWAD5LR.js → build-M4UYZAFH.js} +3 -2
  3. package/dist/{build-disk-TGLM5XK7.js → build-disk-ZDVSSHO2.js} +3 -2
  4. package/dist/build-info.json +1 -1
  5. package/dist/{builder-FD53GTWL.js → builder-IORYS76D.js} +2 -1
  6. package/dist/{check-WK5P7CEG.js → check-V66LZDNK.js} +15 -14
  7. package/dist/{chunk-T2HH7IHT.js → chunk-63A6NUEZ.js} +1 -1
  8. package/dist/{chunk-3HJMY3H5.js → chunk-6NXBXWOP.js} +1 -1
  9. package/dist/{chunk-3PUOHONX.js → chunk-DFBY6LX3.js} +6 -5
  10. package/dist/{chunk-QVH4RRUQ.js → chunk-F5H3LVHR.js} +2 -2
  11. package/dist/chunk-HDLON3RJ.js +274 -0
  12. package/dist/{chunk-C2LMT42U.js → chunk-IZVDQXTC.js} +9 -9
  13. package/dist/{chunk-LY62UHRR.js → chunk-JZLMFYFM.js} +1 -1
  14. package/dist/{chunk-XYLHSCLR.js → chunk-KOZ6IBEI.js} +8 -279
  15. package/dist/{chunk-K3ACC2CV.js → chunk-MIRCFK4X.js} +2 -33
  16. package/dist/{chunk-RRCLYSCM.js → chunk-PN7RMFPP.js} +2 -2
  17. package/dist/{chunk-BQQPDBSF.js → chunk-Q3L5AC75.js} +2 -2
  18. package/dist/{chunk-2GDKM2O4.js → chunk-T6HSNQAT.js} +4 -4
  19. package/dist/{chunk-LIM35C33.js → chunk-T7HUNNJ2.js} +3 -3
  20. package/dist/{chunk-VCIB3HUZ.js → chunk-TGBST2QL.js} +6 -6
  21. package/dist/{chunk-3NCWHEGM.js → chunk-TLIZ7FY4.js} +2 -2
  22. package/dist/{chunk-XHZBLIB2.js → chunk-XDJ376OP.js} +7 -1
  23. package/dist/{chunk-ZADRW2V2.js → chunk-XLJXO4QC.js} +4 -4
  24. package/dist/{cli-WYHBUV6E.js → cli-HQWQEHXJ.js} +79 -44
  25. package/dist/{command-C5YKBTK4.js → command-TONUMZ2A.js} +8 -7
  26. package/dist/{config-EBT5VYPX.js → config-4K6OG2SZ.js} +4 -3
  27. package/dist/{container-start-UNY3PO5U.js → container-start-R74IO7CI.js} +12 -11
  28. package/dist/demo-record-cmd-7HJ5C7KM.js +208 -0
  29. package/dist/{demo-voice-cmd-DF6C7EST.js → demo-voice-cmd-MBK3BGHZ.js} +1 -2
  30. package/dist/{docker-CP656XNO.js → docker-XWQM4F7B.js} +2 -1
  31. package/dist/{doctor-EQIAHHZD.js → doctor-SF4GAWAO.js} +9 -8
  32. package/dist/{emit-demo-cmd-YKTL6XWP.js → emit-demo-cmd-6VTA5BSJ.js} +1 -2
  33. package/dist/{find-unit-O6WL6UIW.js → find-unit-I4GWKY4T.js} +6 -5
  34. package/dist/{host-checks-HAXPZSDU.js → host-checks-FKLQST3J.js} +10 -9
  35. package/dist/index.js +1 -1
  36. package/dist/{init-KO3FT2XP.js → init-3MO5WCU3.js} +8 -7
  37. package/dist/{init-YYZ7B4ZD.js → init-TDLUTI6F.js} +8 -7
  38. package/dist/{init-cmd-D3BDS7KY.js → init-cmd-MQ5R35O2.js} +1 -1
  39. package/dist/{loop-KP5CI2JH.js → loop-NNNDBFAS.js} +14 -13
  40. package/dist/{machine-2BI76JZO.js → machine-GCW2GGI2.js} +8 -7
  41. package/dist/recorder.cjs +916 -0
  42. package/dist/{runner-env-QN4BLTVZ.js → runner-env-LVVLUHY2.js} +6 -5
  43. package/dist/{runner-identity-53I4UTVY.js → runner-identity-73F2IWBT.js} +2 -1
  44. package/dist/{runner-key-JKXJWGGY.js → runner-key-ASPZ7TQH.js} +8 -7
  45. package/dist/{status-TVN6CDEF.js → status-35Z3TW42.js} +10 -9
  46. package/dist/{update-steps-HPMQMEQR.js → update-steps-ZTNIK7LA.js} +11 -10
  47. package/dist/{work-claim-cmd-O54L5DSL.js → work-claim-cmd-QPYCZUMI.js} +4 -3
  48. package/dist/{work-proofs-cmd-BO6Q2LVK.js → work-proofs-cmd-56EY7O45.js} +1 -1
  49. package/dist/{work-proofs-record-FCA47NNX.js → work-proofs-record-SPGI47OS.js} +2 -3
  50. package/package.json +5 -4
  51. package/skill-pack/maintained/outerlayer-evidence/SKILL.md +6 -6
  52. package/skill-pack/maintained/outerlayer-evidence/references/demo.md +12 -11
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { AGENT_COMMANDS, RunnerEnvError, credentialFromStdin, hasStoredCredential, isAgentName, restartForCredential, storeClaudeCredential } from './chunk-T2HH7IHT.js';
4
- import './chunk-3NCWHEGM.js';
5
- import './chunk-BQQPDBSF.js';
6
- import './chunk-3HJMY3H5.js';
7
- import './chunk-XYLHSCLR.js';
3
+ export { AGENT_COMMANDS, RunnerEnvError, credentialFromStdin, hasStoredCredential, isAgentName, restartForCredential, storeClaudeCredential } from './chunk-63A6NUEZ.js';
4
+ import './chunk-TLIZ7FY4.js';
5
+ import './chunk-Q3L5AC75.js';
6
+ import './chunk-6NXBXWOP.js';
7
+ import './chunk-KOZ6IBEI.js';
8
8
  import './chunk-4UPET3R7.js';
9
+ import './chunk-HDLON3RJ.js';
9
10
  import './chunk-L5VHGRQE.js';
10
11
  import './chunk-OOD5NDQA.js';
11
12
  import './chunk-DINRXUQA.js';
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RUNNER_LABEL, builderNameFor, dockerIdentity, ensureRunnerIdentity, identityDockerFor, pathLabelValue, readRunnerIdentity } from './chunk-XYLHSCLR.js';
3
+ export { RUNNER_LABEL, builderNameFor, dockerIdentity, ensureRunnerIdentity, identityDockerFor, pathLabelValue, readRunnerIdentity } from './chunk-KOZ6IBEI.js';
4
4
  import './chunk-4UPET3R7.js';
5
+ import './chunk-HDLON3RJ.js';
5
6
  import './chunk-L5VHGRQE.js';
6
7
  import './chunk-OOD5NDQA.js';
7
8
  import './chunk-DINRXUQA.js';
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { readConfigObject, RunnerInitError } from './chunk-3PUOHONX.js';
3
+ import { readConfigObject, RunnerInitError } from './chunk-DFBY6LX3.js';
4
4
  import './chunk-2PGI6RDE.js';
5
- import './chunk-XHZBLIB2.js';
5
+ import './chunk-XDJ376OP.js';
6
6
  import './chunk-OGFGZQA3.js';
7
7
  import './chunk-3VZTNXK5.js';
8
8
  import './chunk-6KFJIU73.js';
9
9
  import './chunk-77VBS2RT.js';
10
10
  import './chunk-SDELQEG4.js';
11
11
  import './chunk-TQMI335S.js';
12
- import './chunk-T2HH7IHT.js';
13
- import './chunk-3NCWHEGM.js';
14
- import { runnerCredentialProblem } from './chunk-BQQPDBSF.js';
15
- import './chunk-3HJMY3H5.js';
16
- import './chunk-XYLHSCLR.js';
12
+ import './chunk-63A6NUEZ.js';
13
+ import './chunk-TLIZ7FY4.js';
14
+ import { runnerCredentialProblem } from './chunk-Q3L5AC75.js';
15
+ import './chunk-6NXBXWOP.js';
16
+ import './chunk-KOZ6IBEI.js';
17
17
  import './chunk-4UPET3R7.js';
18
+ import './chunk-HDLON3RJ.js';
18
19
  import './chunk-LQHCNXPK.js';
19
20
  import './chunk-JBJTC3UU.js';
20
21
  import { getJson } from './chunk-QABXXQ67.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-VCIB3HUZ.js';
4
- import { jobStateFormatOf } from './chunk-ZVB57WI6.js';
3
+ import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-TGBST2QL.js';
5
4
  import './chunk-6CK2OC4Q.js';
5
+ import { jobStateFormatOf } from './chunk-ZVB57WI6.js';
6
6
  import './chunk-P3NPTFLF.js';
7
7
  import './chunk-I3LTIAOR.js';
8
8
  import './chunk-WBTPI5MP.js';
@@ -12,21 +12,22 @@ import './chunk-ESVW4MJY.js';
12
12
  import './chunk-CFFVCI2I.js';
13
13
  import './chunk-TBT347UY.js';
14
14
  import './chunk-TZMDRHWB.js';
15
- import { LEASE_SECONDS } from './chunk-3PUOHONX.js';
15
+ import { LEASE_SECONDS } from './chunk-DFBY6LX3.js';
16
16
  import './chunk-2PGI6RDE.js';
17
- import './chunk-XHZBLIB2.js';
17
+ import './chunk-XDJ376OP.js';
18
18
  import './chunk-OGFGZQA3.js';
19
19
  import './chunk-3VZTNXK5.js';
20
20
  import './chunk-6KFJIU73.js';
21
21
  import { formatDuration, formatClock, relativeToRunner } from './chunk-77VBS2RT.js';
22
22
  import { pullInstruction } from './chunk-SDELQEG4.js';
23
23
  import './chunk-TQMI335S.js';
24
- import './chunk-T2HH7IHT.js';
25
- import './chunk-3NCWHEGM.js';
26
- import './chunk-BQQPDBSF.js';
27
- import { formatBytes } from './chunk-3HJMY3H5.js';
28
- import './chunk-XYLHSCLR.js';
24
+ import './chunk-63A6NUEZ.js';
25
+ import './chunk-TLIZ7FY4.js';
26
+ import './chunk-Q3L5AC75.js';
27
+ import { formatBytes } from './chunk-6NXBXWOP.js';
28
+ import './chunk-KOZ6IBEI.js';
29
29
  import './chunk-4UPET3R7.js';
30
+ import './chunk-HDLON3RJ.js';
30
31
  import './chunk-LQHCNXPK.js';
31
32
  import './chunk-JBJTC3UU.js';
32
33
  import './chunk-KT4CN6OU.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { readOwnContainer, renderUpdateSteps, runUpdateSteps } from './chunk-RRCLYSCM.js';
4
- import './chunk-VCIB3HUZ.js';
5
- import './chunk-ZVB57WI6.js';
3
+ export { readOwnContainer, renderUpdateSteps, runUpdateSteps } from './chunk-PN7RMFPP.js';
4
+ import './chunk-TGBST2QL.js';
6
5
  import './chunk-6CK2OC4Q.js';
6
+ import './chunk-ZVB57WI6.js';
7
7
  import './chunk-P3NPTFLF.js';
8
8
  import './chunk-I3LTIAOR.js';
9
9
  import './chunk-WBTPI5MP.js';
@@ -13,21 +13,22 @@ import './chunk-ESVW4MJY.js';
13
13
  import './chunk-CFFVCI2I.js';
14
14
  import './chunk-TBT347UY.js';
15
15
  import './chunk-TZMDRHWB.js';
16
- import './chunk-3PUOHONX.js';
16
+ import './chunk-DFBY6LX3.js';
17
17
  import './chunk-2PGI6RDE.js';
18
- import './chunk-XHZBLIB2.js';
18
+ import './chunk-XDJ376OP.js';
19
19
  import './chunk-OGFGZQA3.js';
20
20
  import './chunk-3VZTNXK5.js';
21
21
  import './chunk-6KFJIU73.js';
22
22
  import './chunk-77VBS2RT.js';
23
23
  import './chunk-SDELQEG4.js';
24
24
  import './chunk-TQMI335S.js';
25
- import './chunk-T2HH7IHT.js';
26
- import './chunk-3NCWHEGM.js';
27
- import './chunk-BQQPDBSF.js';
28
- import './chunk-3HJMY3H5.js';
29
- import './chunk-XYLHSCLR.js';
25
+ import './chunk-63A6NUEZ.js';
26
+ import './chunk-TLIZ7FY4.js';
27
+ import './chunk-Q3L5AC75.js';
28
+ import './chunk-6NXBXWOP.js';
29
+ import './chunk-KOZ6IBEI.js';
30
30
  import './chunk-4UPET3R7.js';
31
+ import './chunk-HDLON3RJ.js';
31
32
  import './chunk-LQHCNXPK.js';
32
33
  import './chunk-JBJTC3UU.js';
33
34
  import './chunk-KT4CN6OU.js';
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { RUNNER_PROTOCOL } from './chunk-MH6QLXUO.js';
4
- import { defaultRunnerConfigPath } from './chunk-BQQPDBSF.js';
5
- import './chunk-3HJMY3H5.js';
6
- import './chunk-XYLHSCLR.js';
4
+ import { defaultRunnerConfigPath } from './chunk-Q3L5AC75.js';
5
+ import './chunk-6NXBXWOP.js';
6
+ import './chunk-KOZ6IBEI.js';
7
7
  import './chunk-4UPET3R7.js';
8
+ import './chunk-HDLON3RJ.js';
8
9
  import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, environmentFacts, findLiveItemForIssue } from './chunk-QABXXQ67.js';
9
10
  export { WorkCommandError } from './chunk-QABXXQ67.js';
10
11
  import './chunk-IP7BIBXJ.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { classifyProofs, classifyProofsAt, otherPullRequestHeads, resolveProofsItem, runWorkProofs, runWorkProofsCommand } from './chunk-LIM35C33.js';
3
+ export { classifyProofs, classifyProofsAt, otherPullRequestHeads, resolveProofsItem, runWorkProofs, runWorkProofsCommand } from './chunk-T7HUNNJ2.js';
4
4
  import './chunk-6CK2OC4Q.js';
5
5
  import './chunk-QABXXQ67.js';
6
6
  import './chunk-IP7BIBXJ.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveProofsItem, ownPullRequest, proofsCommentId, otherPullRequestHeads, classifyProofsAt, kindProblem, proofsCommentBody, runWorkProofs } from './chunk-LIM35C33.js';
3
+ import { resolveProofsItem, ownPullRequest, proofsCommentId, otherPullRequestHeads, classifyProofsAt, kindProblem, proofsCommentBody, runWorkProofs } from './chunk-T7HUNNJ2.js';
4
4
  import { runWorkComment } from './chunk-EBVK3QBO.js';
5
5
  import './chunk-6CK2OC4Q.js';
6
- import { runEmitDemo } from './chunk-K3ACC2CV.js';
6
+ import { runEmitDemo } from './chunk-MIRCFK4X.js';
7
7
  import { readNewestDemo } from './chunk-ER6KQCVJ.js';
8
8
  import { runEmitArtifact } from './chunk-QWXBWOVV.js';
9
9
  import { runSync } from './chunk-QRJIBTNQ.js';
@@ -11,7 +11,6 @@ import './chunk-7DK2FOZ4.js';
11
11
  import './chunk-ESVW4MJY.js';
12
12
  import './chunk-TBT347UY.js';
13
13
  import './chunk-2PGI6RDE.js';
14
- import './chunk-TQMI335S.js';
15
14
  import './chunk-4UPET3R7.js';
16
15
  import { WorkCommandError, resolveCredentials, getJson } from './chunk-QABXXQ67.js';
17
16
  import './chunk-IP7BIBXJ.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.34.0-next.20261026214555",
4
- "description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, findings, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
3
+ "version": "0.34.0-next.20261026230708",
4
+ "description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, demo, findings, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Magu Studios, Inc.",
7
7
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "scripts": {
36
- "build": "tsup",
36
+ "build": "tsup && tsup --config tsup.recorder.config.ts",
37
37
  "test": "vitest run ${CLI_VITEST_PROJECT:+--project=$CLI_VITEST_PROJECT}",
38
38
  "test:watch": "vitest",
39
39
  "test:mutate": "stryker run",
@@ -68,6 +68,7 @@
68
68
  "node": ">=22"
69
69
  },
70
70
  "dependencies": {
71
- "@devcontainers/cli": "0.89.0"
71
+ "@devcontainers/cli": "0.89.0",
72
+ "@playwright/test": "1.64.1"
72
73
  }
73
74
  }
@@ -85,15 +85,15 @@ only when Playwright cannot drive the flow.
85
85
  A demo plays like a person showing the app. Tell each chapter in beats with
86
86
  `demo.say(line, steps)`: the line is spoken while its steps run on screen.
87
87
  The demo shows only beats, so sign in, seed data and wait outside them. Show
88
- a CLI step with `demo.terminal()`. The recorder, `@outerlayer/playwright`,
89
- releases with the CLI: install it at the CLI's version first. The test, and
90
- the rules a reviewer holds it to, are in
88
+ a CLI step with `demo.terminal()`. The recorder ships inside the CLI, so
89
+ install nothing. The script, and the rules a reviewer holds it to, are in
91
90
  [references/demo.md](references/demo.md).
92
91
 
93
- Commit the test: `work proofs --record` finds it by its chapter ids. Run it,
94
- then emit the demo:
92
+ Commit the script, named `*.demo.ts`: `work proofs --record` finds it by its
93
+ chapter ids. Record it, then emit the demo:
95
94
 
96
- outerlayer emit demo test-results/<test folder>/demo/manifest.json
95
+ outerlayer demo record e2e/<name>.demo.ts --config <playwright config> --project <name>
96
+ outerlayer emit demo <the manifest it prints>
97
97
 
98
98
  Pass `--output demo.webm` first and watch the demo. The command shows only
99
99
  the beats and cuts each stretch in which the screen does not move and nothing
@@ -4,14 +4,12 @@ A demo is a reviewer's first look at the change. It plays like a person
4
4
  showing the app: each step happens on screen while a line says what it is.
5
5
  Setup, sign-ins and waits never reach the video.
6
6
 
7
- ## The test
7
+ ## The script
8
8
 
9
- The fixture, `@outerlayer/playwright`, releases with the CLI at the same
10
- version. `outerlayer --version` prints the CLI's version first. Before you
11
- write the test, install the fixture at that version with the repository's
12
- package manager. Commit that change with the test. Keep a newer version, and
13
- keep a `workspace:` dependency as it is. Import `test` and `expect` from the
14
- fixture:
9
+ The recorder ships inside the CLI. Install nothing. Name the script
10
+ `*.demo.ts`, so the repository's own test runs never pick it up, and write
11
+ it against the app as it is now, not from an older demo. Import `test` and
12
+ `expect` from `@outerlayer/playwright`:
15
13
 
16
14
  import { expect, test } from "@outerlayer/playwright";
17
15
 
@@ -33,8 +31,12 @@ fixture:
33
31
  });
34
32
 
35
33
  Each beat lasts as long as its line. Inside a beat a pointer moves to each
36
- click, `fill` types its text, and the page scrolls smoothly. Set
37
- `OUTERLAYER_CLI` to the CLI so each beat is timed to its real line.
34
+ click, `fill` types its text, and the page scrolls smoothly.
35
+
36
+ Record it with `outerlayer demo record <script>`. In a repository with its
37
+ own Playwright config, add `--config <file>` and `--project <name>` to reuse
38
+ its setup and sign-in. Without one, add `--base-url <url>`. The command
39
+ prints the manifest's path.
38
40
 
39
41
  ## Rules
40
42
 
@@ -71,5 +73,4 @@ click, `fill` types its text, and the page scrolls smoothly. Set
71
73
  Render the demo with `outerlayer emit demo <manifest> --output demo.webm`
72
74
  and watch it. Fix a beat that shows a loading screen, a sign-in or a step
73
75
  its line does not name. The command exits 1 while the demo holds a frozen,
74
- silent stretch over 2 s. When it notes that the fixture's version is not the
75
- CLI's, install the version it names and record the demo again.
76
+ silent stretch over 2 s.