@outerlayer/cli 0.4.0 → 0.4.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +4 -2
  3. package/dist/build-info.json +1 -1
  4. package/dist/{check-WQP2CZDW.js → check-7MFH6HNC.js} +11 -11
  5. package/dist/{chunk-L2DBRKRA.js → chunk-3TFPDVTI.js} +1 -1
  6. package/dist/{chunk-G7FSV7JX.js → chunk-4C4THABW.js} +2116 -5
  7. package/dist/{chunk-DVYHCMB2.js → chunk-7WERLFVR.js} +1 -1
  8. package/dist/{chunk-FAJSS2WN.js → chunk-DM3VFDS3.js} +138 -34
  9. package/dist/{chunk-7A6RVXPZ.js → chunk-HZRNMGLF.js} +1 -1
  10. package/dist/{chunk-3YPKXE5L.js → chunk-LT5TZHYH.js} +8 -5
  11. package/dist/{chunk-HE2D4EY5.js → chunk-LYCDNMOH.js} +1 -1
  12. package/dist/{chunk-FV2CCGXK.js → chunk-QDQEUVUF.js} +1 -1
  13. package/dist/{chunk-FS2VYGZT.js → chunk-QY22NZUW.js} +6 -6
  14. package/dist/{chunk-7YIOOFVJ.js → chunk-RFUPN6KX.js} +4 -4
  15. package/dist/{chunk-3TT7RQYB.js → chunk-SY4GK4SP.js} +1 -1
  16. package/dist/{chunk-NYC54VBD.js → chunk-TWNWNS2Q.js} +5 -5
  17. package/dist/{chunk-5DLBAXY5.js → chunk-W5FVUZXV.js} +2 -2
  18. package/dist/{chunk-6Y63SXFO.js → chunk-WFJ65NUD.js} +1 -1
  19. package/dist/{chunk-2E54Z3P5.js → chunk-Y7KJLXYN.js} +3 -3
  20. package/dist/{chunk-CBZB6XY6.js → chunk-YFHIIH4B.js} +2 -2
  21. package/dist/{cli-NHUXABYH.js → cli-W62AFRSW.js} +71 -47
  22. package/dist/{connect-cmd-OOG4TPU7.js → connect-cmd-ZTJONP37.js} +4 -4
  23. package/dist/{dist-RW4UPPC2.js → dist-44CQVWGT.js} +1 -1
  24. package/dist/{doctor-UFVL4PZY.js → doctor-ZLGZYMDK.js} +7 -7
  25. package/dist/{emit-artifact-cmd-KTYW2TN2.js → emit-artifact-cmd-AKZP7TMF.js} +67 -7
  26. package/dist/{emit-criteria-cmd-VAUUSAYD.js → emit-criteria-cmd-7MXQVCKD.js} +1 -1
  27. package/dist/{emit-finding-cmd-UR4ID45Z.js → emit-finding-cmd-N2FTGCVC.js} +1 -1
  28. package/dist/{emit-result-cmd-FDTUKGKE.js → emit-result-cmd-4CPDBMN2.js} +4 -4
  29. package/dist/index.js +1 -1
  30. package/dist/{init-DXBCOAJK.js → init-55Y4LHWF.js} +6 -6
  31. package/dist/{init-YEXK35CF.js → init-XXEKWZQP.js} +6 -6
  32. package/dist/{init-cmd-NHR7PRSQ.js → init-cmd-WLST2F7G.js} +6 -6
  33. package/dist/{loop-VZOLL4WQ.js → loop-JFIBP4B7.js} +8 -8
  34. package/dist/{machine-WSG52J75.js → machine-ZBPT2J3R.js} +5 -5
  35. package/dist/{mcp-serve-cmd-JPTP5FMS.js → mcp-serve-cmd-N6UD2KBX.js} +1 -1
  36. package/dist/{status-2UZKKNB7.js → status-UJXWZRN5.js} +6 -6
  37. package/dist/{sync-cmd-VPPYCNNM.js → sync-cmd-4G4A7EVN.js} +4 -4
  38. package/dist/{watch-5C4ZBBGO.js → watch-7SKJKGAA.js} +4 -4
  39. package/dist/{work-claim-cmd-LSO2B2EX.js → work-claim-cmd-5F7VZ42N.js} +6 -6
  40. package/dist/{work-cmd-UOQO2AD4.js → work-cmd-QAUZ7MTD.js} +3 -3
  41. package/dist/{work-comment-cmd-WF3EOLAE.js → work-comment-cmd-BNCSBTLH.js} +3 -3
  42. package/dist/{work-open-pr-cmd-4SSQZMYG.js → work-open-pr-cmd-VFYZHIIW.js} +4 -4
  43. package/dist/{work-pr-cmd-6AN6RRQJ.js → work-pr-cmd-PV32ZLSI.js} +2 -2
  44. package/package.json +1 -1
  45. package/skill-pack/maintained/emitting-evidence/SKILL.md +10 -1
@@ -2,9 +2,9 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { execStartCommand } from './chunk-YYYXRJUW.js';
4
4
  import { writeLaunchAgent } from './chunk-LF6MLJCY.js';
5
- import { readConfigObject, RunnerInitError, isPlaceholderCommand } from './chunk-CBZB6XY6.js';
6
- import './chunk-L2DBRKRA.js';
7
- import './chunk-7A6RVXPZ.js';
5
+ import { readConfigObject, RunnerInitError, isPlaceholderCommand } from './chunk-YFHIIH4B.js';
6
+ import './chunk-3TFPDVTI.js';
7
+ import './chunk-HZRNMGLF.js';
8
8
  import './chunk-ZNA27WEV.js';
9
9
  import './chunk-N5FOE5PS.js';
10
10
  import './chunk-OGFGZQA3.js';
@@ -12,10 +12,10 @@ import './chunk-774HEQL6.js';
12
12
  import './chunk-QOZKPLVJ.js';
13
13
  import './chunk-W4SQCOZU.js';
14
14
  import './chunk-B2G7JHHB.js';
15
- import './chunk-5DLBAXY5.js';
15
+ import './chunk-W5FVUZXV.js';
16
16
  import './chunk-BFESLKPP.js';
17
- import './chunk-6Y63SXFO.js';
18
- import './chunk-G7FSV7JX.js';
17
+ import './chunk-WFJ65NUD.js';
18
+ import './chunk-4C4THABW.js';
19
19
  import { resolveBuild } from './chunk-5Y3QQRUH.js';
20
20
  import { parseSize } from './chunk-F6GFZXZ3.js';
21
21
  import './chunk-AUFG23AA.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-NYC54VBD.js';
4
- import { runConnect } from './chunk-2E54Z3P5.js';
5
- import './chunk-3TT7RQYB.js';
3
+ import { summarizeChecks, summaryText, renderDoctorText } from './chunk-TWNWNS2Q.js';
4
+ import { runConnect } from './chunk-Y7KJLXYN.js';
5
+ import './chunk-SY4GK4SP.js';
6
6
  import './chunk-F47JBIAW.js';
7
7
  import './chunk-BKO6JEZI.js';
8
- import './chunk-5DLBAXY5.js';
8
+ import './chunk-W5FVUZXV.js';
9
9
  import './chunk-BFESLKPP.js';
10
- import './chunk-6Y63SXFO.js';
11
- import './chunk-G7FSV7JX.js';
10
+ import './chunk-WFJ65NUD.js';
11
+ import './chunk-4C4THABW.js';
12
12
  import './chunk-USO2DKBD.js';
13
13
  import './chunk-N6LURUEF.js';
14
14
  import { C } from './chunk-YRYMNBGQ.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-FS2VYGZT.js';
4
- import './chunk-FAJSS2WN.js';
5
- import './chunk-FV2CCGXK.js';
3
+ export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-QY22NZUW.js';
4
+ import './chunk-DM3VFDS3.js';
5
+ import './chunk-QDQEUVUF.js';
6
6
  import './chunk-ABIWDUMS.js';
7
7
  import './chunk-YYYXRJUW.js';
8
8
  import './chunk-CBPPJSAR.js';
9
- import './chunk-HE2D4EY5.js';
9
+ import './chunk-LYCDNMOH.js';
10
10
  import './chunk-TBT347UY.js';
11
- import './chunk-7A6RVXPZ.js';
11
+ import './chunk-HZRNMGLF.js';
12
12
  import './chunk-ZNA27WEV.js';
13
13
  import './chunk-N5FOE5PS.js';
14
14
  import './chunk-OGFGZQA3.js';
@@ -16,10 +16,10 @@ import './chunk-774HEQL6.js';
16
16
  import './chunk-QOZKPLVJ.js';
17
17
  import './chunk-W4SQCOZU.js';
18
18
  import './chunk-B2G7JHHB.js';
19
- import './chunk-5DLBAXY5.js';
19
+ import './chunk-W5FVUZXV.js';
20
20
  import './chunk-BFESLKPP.js';
21
- import './chunk-6Y63SXFO.js';
22
- import './chunk-G7FSV7JX.js';
21
+ import './chunk-WFJ65NUD.js';
22
+ import './chunk-4C4THABW.js';
23
23
  import './chunk-5Y3QQRUH.js';
24
24
  import './chunk-F6GFZXZ3.js';
25
25
  import './chunk-AUFG23AA.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-L2DBRKRA.js';
4
- import './chunk-7A6RVXPZ.js';
3
+ export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-3TFPDVTI.js';
4
+ import './chunk-HZRNMGLF.js';
5
5
  import './chunk-ZNA27WEV.js';
6
6
  import './chunk-N5FOE5PS.js';
7
7
  import './chunk-OGFGZQA3.js';
@@ -9,10 +9,10 @@ import './chunk-774HEQL6.js';
9
9
  import './chunk-QOZKPLVJ.js';
10
10
  import './chunk-W4SQCOZU.js';
11
11
  import './chunk-B2G7JHHB.js';
12
- import './chunk-5DLBAXY5.js';
12
+ import './chunk-W5FVUZXV.js';
13
13
  import './chunk-BFESLKPP.js';
14
- import './chunk-6Y63SXFO.js';
15
- import './chunk-G7FSV7JX.js';
14
+ import './chunk-WFJ65NUD.js';
15
+ import './chunk-4C4THABW.js';
16
16
  import './chunk-F6GFZXZ3.js';
17
17
  import './chunk-AUFG23AA.js';
18
18
  import './chunk-WZBHBH3J.js';
@@ -26,7 +26,7 @@ function resolveMcpServeTarget(opts = {}) {
26
26
  const apiKey = resolved.credential;
27
27
  if (!apiKey) {
28
28
  throw new McpServeConfigError(
29
- `no API key: set OUTERLAYER_API_KEY, run "outerlayer login", or save "apiKey" to ${cloudConfigPath(home)} (run "outerlayer sync" once with --api-key, or mint a key in the dashboard: Settings \u2192 API keys).`
29
+ `no API key: run "outerlayer login", set OUTERLAYER_API_KEY, or save "apiKey" to ${cloudConfigPath(home)} (mint a key in the dashboard: Settings \u2192 API keys).`
30
30
  );
31
31
  }
32
32
  if (!resolved.ok && resolved.kind === "login" && !resolved.appId && resolved.url) {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-FAJSS2WN.js';
3
+ import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-DM3VFDS3.js';
4
4
  import './chunk-CBPPJSAR.js';
5
- import './chunk-HE2D4EY5.js';
6
- import { formatDuration, formatClock, relativeToRunner } from './chunk-7A6RVXPZ.js';
5
+ import './chunk-LYCDNMOH.js';
6
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-HZRNMGLF.js';
7
7
  import './chunk-ZNA27WEV.js';
8
8
  import './chunk-N5FOE5PS.js';
9
9
  import './chunk-OGFGZQA3.js';
@@ -11,10 +11,10 @@ import './chunk-774HEQL6.js';
11
11
  import './chunk-QOZKPLVJ.js';
12
12
  import './chunk-W4SQCOZU.js';
13
13
  import './chunk-B2G7JHHB.js';
14
- import './chunk-5DLBAXY5.js';
14
+ import './chunk-W5FVUZXV.js';
15
15
  import './chunk-BFESLKPP.js';
16
- import './chunk-6Y63SXFO.js';
17
- import './chunk-G7FSV7JX.js';
16
+ import './chunk-WFJ65NUD.js';
17
+ import './chunk-4C4THABW.js';
18
18
  import './chunk-5Y3QQRUH.js';
19
19
  import './chunk-F6GFZXZ3.js';
20
20
  import './chunk-AUFG23AA.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, isLoopbackUrl, resolveTier, runSync } from './chunk-3YPKXE5L.js';
4
- export { detectCi } from './chunk-HE2D4EY5.js';
3
+ export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, isLoopbackUrl, resolveTier, runSync } from './chunk-LT5TZHYH.js';
4
+ export { detectCi } from './chunk-LYCDNMOH.js';
5
5
  import './chunk-BCJNHMZT.js';
6
6
  import './chunk-TBT347UY.js';
7
7
  import './chunk-F7CU5ABH.js';
8
8
  import './chunk-BKO6JEZI.js';
9
9
  import './chunk-BFESLKPP.js';
10
- import './chunk-6Y63SXFO.js';
11
- import './chunk-G7FSV7JX.js';
10
+ import './chunk-WFJ65NUD.js';
11
+ import './chunk-4C4THABW.js';
12
12
  import './chunk-YRYMNBGQ.js';
13
13
  import './chunk-DVDEBNQJ.js';
14
14
  import './chunk-WZBHBH3J.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-3YPKXE5L.js';
4
- import './chunk-HE2D4EY5.js';
3
+ import { LiveUploader } from './chunk-LT5TZHYH.js';
4
+ import './chunk-LYCDNMOH.js';
5
5
  import './chunk-BCJNHMZT.js';
6
6
  import './chunk-TBT347UY.js';
7
7
  import './chunk-F7CU5ABH.js';
8
8
  import './chunk-BKO6JEZI.js';
9
9
  import './chunk-BFESLKPP.js';
10
- import './chunk-6Y63SXFO.js';
11
- import { StatuslineAggregator, CaptureDaemon } from './chunk-G7FSV7JX.js';
10
+ import './chunk-WFJ65NUD.js';
11
+ import { StatuslineAggregator, CaptureDaemon } from './chunk-4C4THABW.js';
12
12
  import './chunk-YRYMNBGQ.js';
13
13
  import './chunk-DVDEBNQJ.js';
14
14
  import './chunk-WZBHBH3J.js';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_PROTOCOL } from './chunk-FV2CCGXK.js';
4
- import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-5DLBAXY5.js';
5
- export { WorkCommandError } from './chunk-5DLBAXY5.js';
3
+ import { RUNNER_PROTOCOL } from './chunk-QDQEUVUF.js';
4
+ import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-W5FVUZXV.js';
5
+ export { WorkCommandError } from './chunk-W5FVUZXV.js';
6
6
  import './chunk-BFESLKPP.js';
7
- import './chunk-6Y63SXFO.js';
8
- import './chunk-G7FSV7JX.js';
7
+ import './chunk-WFJ65NUD.js';
8
+ import './chunk-4C4THABW.js';
9
9
  import { defaultRunnerConfigPath } from './chunk-5Y3QQRUH.js';
10
10
  import './chunk-F6GFZXZ3.js';
11
11
  import './chunk-AUFG23AA.js';
@@ -25,7 +25,7 @@ var DEFAULT_LEASE_SECONDS = 900;
25
25
  function hostKeyFor(opts) {
26
26
  return ensureHostKey(defaultRunnerConfigPath(opts.home ?? homeFromEnv()));
27
27
  }
28
- var CLAIM_OUTCOMES = ["ok", "failed", "timed_out", "idle", "lease_lost", "interrupted", "stopped"];
28
+ var CLAIM_OUTCOMES = ["ok", "incomplete", "failed", "timed_out", "idle", "lease_lost", "interrupted", "stopped"];
29
29
  async function resolveItemIdentifier(opts, creds, cwd, fetchImpl) {
30
30
  const itemNumber = parsePositiveInt(opts.item, "--item");
31
31
  if (itemNumber !== void 0) return itemNumber;
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-5DLBAXY5.js';
3
+ export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-W5FVUZXV.js';
4
4
  import './chunk-BFESLKPP.js';
5
- import './chunk-6Y63SXFO.js';
6
- import './chunk-G7FSV7JX.js';
5
+ import './chunk-WFJ65NUD.js';
6
+ import './chunk-4C4THABW.js';
7
7
  import './chunk-WZBHBH3J.js';
8
8
  import './chunk-BCLJSQCV.js';
9
9
  import './chunk-BOLTI6LR.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-5DLBAXY5.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-W5FVUZXV.js';
4
4
  import { detectActiveSession } from './chunk-BFESLKPP.js';
5
- import { sanitizeTerminal } from './chunk-6Y63SXFO.js';
6
- import { resolveRepoIdentity } from './chunk-G7FSV7JX.js';
5
+ import { sanitizeTerminal } from './chunk-WFJ65NUD.js';
6
+ import { resolveRepoIdentity } from './chunk-4C4THABW.js';
7
7
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
8
8
  import { defaultFetch } from './chunk-BCLJSQCV.js';
9
9
  import './chunk-BOLTI6LR.js';
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { runWorkPr, WorkPrCommandError } from './chunk-DVYHCMB2.js';
4
- import { resolveCredentials } from './chunk-5DLBAXY5.js';
3
+ import { runWorkPr, WorkPrCommandError } from './chunk-7WERLFVR.js';
4
+ import { resolveCredentials } from './chunk-W5FVUZXV.js';
5
5
  import './chunk-BFESLKPP.js';
6
- import './chunk-6Y63SXFO.js';
7
- import './chunk-G7FSV7JX.js';
6
+ import './chunk-WFJ65NUD.js';
7
+ import './chunk-4C4THABW.js';
8
8
  import './chunk-WZBHBH3J.js';
9
9
  import { defaultFetch } from './chunk-BCLJSQCV.js';
10
10
  import './chunk-BOLTI6LR.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkPrCommandError, runWorkPr } from './chunk-DVYHCMB2.js';
3
+ export { WorkPrCommandError, runWorkPr } from './chunk-7WERLFVR.js';
4
4
  import './chunk-BFESLKPP.js';
5
- import './chunk-G7FSV7JX.js';
5
+ import './chunk-4C4THABW.js';
6
6
  import './chunk-WZBHBH3J.js';
7
7
  import './chunk-BCLJSQCV.js';
8
8
  import './chunk-BOLTI6LR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "OuterLayer CLI — commands: init, connect, doctor, login, logout, sync, daemon (alias: watch), emit, work, runner, hooks, mcp, import, 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.",
@@ -35,6 +35,15 @@ artifact shares one upload cap of 8 MiB, whatever its kind:
35
35
  - **log** (`.txt`, `.log`) — command output proving a run happened: test
36
36
  runs, migrations, gate output. Pipe to a file and emit that file.
37
37
 
38
+ - **test** (`.xml`) — JUnit XML results from a test runner, for a criterion
39
+ that declares `"proof": "test"`. Emit the file the runner wrote:
40
+ `outerlayer emit artifact results.xml --caption "…" --for LOGIN-01`. Every
41
+ test in the file binds. To bind only some, add `--test "<name>"` once per
42
+ test, or `--test "<name>=<path>:<line>"` to give where the test is written
43
+ when the runner's file does not. The criterion is proven only when every
44
+ bound test passed, at the pull request's head commit: run the tests again
45
+ and emit again after a fix, with `--replaces` for the old results.
46
+
38
47
  Anything else uploads as plain `file` — it is never guessed into a stronger
39
48
  kind, so a `.mov` will NOT count where a video is required; convert first.
40
49
 
@@ -52,7 +61,7 @@ Record the item's acceptance criteria before you bind evidence to them:
52
61
 
53
62
  The file is `{"criteria": [{"id": "LOGIN-01", "text": "…", "proof": null}]}`,
54
63
  one entry per criterion as your team wrote it. `proof` is the artifact kind
55
- that proves it (`video`, `screenshot`, `report`, `log`, `file`) or `null`. The
64
+ that proves it (`video`, `screenshot`, `report`, `log`, `test`, `file`) or `null`. The
56
65
  id is yours, 1 to 64 characters of `A-Z a-z 0-9 . _ : -`. The list is the
57
66
  only source for the item's Criteria tab: nothing reads criteria out of the
58
67
  issue. Once an item has a list, an agent session cannot replace it; ask a