@indigoai-us/hq-cli 5.345.147 → 5.345.148

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 (122) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/assets/bot-workers/setup/worker.yaml +11 -0
  3. package/dist/command-catalog.generated.d.ts +297 -3
  4. package/dist/command-catalog.generated.js +368 -3
  5. package/dist/commands/agent-inbox.js +2 -1
  6. package/dist/commands/cloud.js +31 -1
  7. package/dist/commands/core-refresh-vault-access-native.d.ts +17 -0
  8. package/dist/commands/core-refresh-vault-access-native.js +214 -19
  9. package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +9 -0
  10. package/dist/commands/core-work-mesh-bind-trusted-native.js +26 -19
  11. package/dist/commands/core.js +6 -0
  12. package/dist/commands/daemon.d.ts +7 -0
  13. package/dist/commands/daemon.js +37 -3
  14. package/dist/commands/dm.js +9 -2
  15. package/dist/commands/doctor.d.ts +11 -1
  16. package/dist/commands/doctor.js +56 -1
  17. package/dist/commands/install-global.d.ts +7 -0
  18. package/dist/commands/install-global.js +129 -35
  19. package/dist/commands/lanes-shared.d.ts +3 -1
  20. package/dist/commands/lanes.d.ts +4 -4
  21. package/dist/commands/lanes.js +380 -25
  22. package/dist/commands/pack-install.d.ts +2 -2
  23. package/dist/commands/pack-install.js +133 -35
  24. package/dist/commands/sync-manifest.d.ts +2 -9
  25. package/dist/commands/sync-manifest.js +4 -15
  26. package/dist/hook-engine-path.d.ts +4 -0
  27. package/dist/hook-engine-path.js +36 -0
  28. package/dist/hq-cloud-sync-runner/bin/sync-runner.js +2783 -2354
  29. package/dist/hq-cloud-sync-runner/package.json +1 -1
  30. package/dist/index.js +6 -0
  31. package/dist/lib/agent-kit/inbox-redact.d.ts +44 -0
  32. package/dist/lib/agent-kit/inbox-redact.js +361 -0
  33. package/dist/lib/agent-kit/inbox-state.js +11 -2
  34. package/dist/lib/agent-kit/mcp/tools.js +2 -1
  35. package/dist/lib/agent-kit/run/inbox.js +36 -7
  36. package/dist/lib/anywhere-runtime-flag-key.d.ts +3 -0
  37. package/dist/lib/anywhere-runtime-flag-key.js +9 -0
  38. package/dist/lib/company-skill-wrapper.js +6 -4
  39. package/dist/lib/daemon/install.d.ts +47 -1
  40. package/dist/lib/daemon/install.js +181 -15
  41. package/dist/lib/daemon/lock.d.ts +32 -0
  42. package/dist/lib/daemon/lock.js +55 -2
  43. package/dist/lib/doctor/__testing__/run-doctor.js +4 -0
  44. package/dist/lib/doctor/checks/anywhere.d.ts +3 -0
  45. package/dist/lib/doctor/checks/anywhere.js +23 -8
  46. package/dist/lib/doctor/checks/cli-path.d.ts +11 -0
  47. package/dist/lib/doctor/checks/cli-path.js +45 -0
  48. package/dist/lib/doctor/checks/hook-engine.d.ts +4 -0
  49. package/dist/lib/doctor/checks/hook-engine.js +16 -0
  50. package/dist/lib/doctor/checks/sync-health.d.ts +7 -0
  51. package/dist/lib/doctor/checks/sync-health.js +38 -2
  52. package/dist/lib/doctor/checks/temp-homes.d.ts +19 -0
  53. package/dist/lib/doctor/checks/temp-homes.js +54 -0
  54. package/dist/lib/doctor/fix/apply.d.ts +90 -1
  55. package/dist/lib/doctor/fix/apply.js +176 -10
  56. package/dist/lib/doctor/fix/json-output.d.ts +4 -1
  57. package/dist/lib/doctor/fix/json-output.js +6 -0
  58. package/dist/lib/doctor/fix/remediation.d.ts +7 -1
  59. package/dist/lib/doctor/fix/remediation.js +23 -1
  60. package/dist/lib/doctor/registry.js +10 -0
  61. package/dist/lib/doctor/temp-home-sweeper.d.ts +149 -0
  62. package/dist/lib/doctor/temp-home-sweeper.js +418 -0
  63. package/dist/lib/flag-registry-worker-source.generated.d.ts +1 -1
  64. package/dist/lib/flag-registry-worker-source.generated.js +1 -1
  65. package/dist/lib/flag-registry.js +9 -1
  66. package/dist/lib/flag-snapshot-file.js +8 -3
  67. package/dist/lib/hook-engine/resolve.d.ts +31 -0
  68. package/dist/lib/hook-engine/resolve.js +134 -0
  69. package/dist/lib/lanes/admission-host.d.ts +1 -0
  70. package/dist/lib/lanes/admission-host.js +8 -1
  71. package/dist/lib/lanes/admission.d.ts +4 -0
  72. package/dist/lib/lanes/admission.js +6 -2
  73. package/dist/lib/lanes/envelope-repair-dispatch.d.ts +5 -0
  74. package/dist/lib/lanes/envelope-repair-dispatch.js +12 -1
  75. package/dist/lib/lanes/index.d.ts +2 -2
  76. package/dist/lib/lanes/index.js +1 -1
  77. package/dist/lib/lanes/keep-alive.js +4 -1
  78. package/dist/lib/lanes/local-host-identity.d.ts +40 -0
  79. package/dist/lib/lanes/local-host-identity.js +314 -0
  80. package/dist/lib/lanes/reaper.d.ts +1 -1
  81. package/dist/lib/lanes/reaper.js +7 -0
  82. package/dist/lib/lanes/reconcile.d.ts +4 -0
  83. package/dist/lib/lanes/reconcile.js +16 -8
  84. package/dist/lib/lanes/spawn.d.ts +20 -0
  85. package/dist/lib/lanes/spawn.js +48 -2
  86. package/dist/lib/lanes/status-fields.js +6 -1
  87. package/dist/lib/lanes/store.js +8 -1
  88. package/dist/lib/lanes/throttle.d.ts +49 -6
  89. package/dist/lib/lanes/throttle.js +154 -17
  90. package/dist/lib/lanes/types.d.ts +22 -1
  91. package/dist/lib/lanes/types.js +27 -3
  92. package/dist/lib/lanes/watcher.js +27 -2
  93. package/dist/lib/lanes/worker-continuity.d.ts +2 -0
  94. package/dist/lib/lanes/worker-continuity.js +18 -11
  95. package/dist/lib/manifest-disabled.d.ts +13 -0
  96. package/dist/lib/manifest-disabled.js +19 -0
  97. package/dist/lib/service-manager/launchd.d.ts +1 -0
  98. package/dist/lib/service-manager/launchd.js +1 -1
  99. package/dist/lib/windows/user-path.d.ts +48 -0
  100. package/dist/lib/windows/user-path.js +114 -0
  101. package/dist/lib/work-context/auto-bind.d.ts +1 -1
  102. package/dist/lib/work-context/auto-bind.js +22 -3
  103. package/dist/lib/work-context/lane-bind.d.ts +31 -0
  104. package/dist/lib/work-context/lane-bind.js +101 -0
  105. package/dist/lib/work-context/organize.js +1 -0
  106. package/dist/lib/work-context/prd-sync.js +7 -0
  107. package/dist/lib/work-context/project.d.ts +36 -10
  108. package/dist/lib/work-context/project.js +130 -41
  109. package/dist/lib/work-context/reconcile.d.ts +6 -0
  110. package/dist/lib/work-context/reconcile.js +25 -5
  111. package/dist/lib/work-context/state.d.ts +6 -0
  112. package/dist/lib/work-context/state.js +29 -1
  113. package/dist/utils/copy-tree.d.ts +61 -0
  114. package/dist/utils/copy-tree.js +249 -0
  115. package/dist/utils/environmental-error.js +7 -3
  116. package/dist/utils/npm-invocation.d.ts +27 -0
  117. package/dist/utils/npm-invocation.js +54 -0
  118. package/dist/utils/safe-link.d.ts +50 -0
  119. package/dist/utils/safe-link.js +300 -0
  120. package/package.json +17 -5
  121. package/scripts/hook-engine-manifest.mjs +22 -0
  122. package/scripts/install-hook-engine.mjs +10 -0
@@ -8942,9 +8942,19 @@ export const COMMAND_CATALOG = [
8942
8942
  "description": "Provision the company's Outpost instead of your personal box",
8943
8943
  "hidden": false
8944
8944
  },
8945
+ {
8946
+ "flags": "--name <name>",
8947
+ "description": "With --company: not sent. This server creates the company's main Outpost and does not take a name yet",
8948
+ "hidden": false
8949
+ },
8945
8950
  {
8946
8951
  "flags": "--yes",
8947
- "description": "Confirm the $80/month charge (required to provision)",
8952
+ "description": "Confirm the monthly charge (required to provision or create)",
8953
+ "hidden": false
8954
+ },
8955
+ {
8956
+ "flags": "--json",
8957
+ "description": "With --company, emit one JSON object. Progress goes to stderr.",
8948
8958
  "hidden": false
8949
8959
  }
8950
8960
  ],
@@ -8952,7 +8962,7 @@ export const COMMAND_CATALOG = [
8952
8962
  },
8953
8963
  {
8954
8964
  "name": "list",
8955
- "description": "List every Outpost you own",
8965
+ "description": "List every Outpost you own, or a company's Outposts with --company",
8956
8966
  "aliases": [],
8957
8967
  "hidden": false,
8958
8968
  "helpOption": true,
@@ -8961,6 +8971,11 @@ export const COMMAND_CATALOG = [
8961
8971
  "helpText": [],
8962
8972
  "arguments": [],
8963
8973
  "options": [
8974
+ {
8975
+ "flags": "--company <slug>",
8976
+ "description": "List the company's Outposts",
8977
+ "hidden": false
8978
+ },
8964
8979
  {
8965
8980
  "flags": "--json",
8966
8981
  "description": "Emit raw JSON",
@@ -8990,6 +9005,11 @@ export const COMMAND_CATALOG = [
8990
9005
  "description": "Show the company Outpost, its jobs, and each job's run status",
8991
9006
  "hidden": false
8992
9007
  },
9008
+ {
9009
+ "flags": "--outpost <name|id>",
9010
+ "description": "Which company Outpost, when the company has more than one",
9011
+ "hidden": false
9012
+ },
8993
9013
  {
8994
9014
  "flags": "--json",
8995
9015
  "description": "Emit raw JSON",
@@ -9000,7 +9020,7 @@ export const COMMAND_CATALOG = [
9000
9020
  },
9001
9021
  {
9002
9022
  "name": "jobs",
9003
- "description": "Register a job on a company Outpost",
9023
+ "description": "Register, edit, pause, resume, delete, or run a job on a company Outpost",
9004
9024
  "aliases": [],
9005
9025
  "hidden": false,
9006
9026
  "helpOption": true,
@@ -9056,6 +9076,11 @@ export const COMMAND_CATALOG = [
9056
9076
  "description": "Optional JSON object stored with the job",
9057
9077
  "hidden": false
9058
9078
  },
9079
+ {
9080
+ "flags": "--outpost <name|id>",
9081
+ "description": "Which company Outpost runs the job, when the company has more than one",
9082
+ "hidden": false
9083
+ },
9059
9084
  {
9060
9085
  "flags": "--json",
9061
9086
  "description": "Emit the job id and accepted revision as JSON",
@@ -9063,6 +9088,256 @@ export const COMMAND_CATALOG = [
9063
9088
  }
9064
9089
  ],
9065
9090
  "subcommands": []
9091
+ },
9092
+ {
9093
+ "name": "edit",
9094
+ "description": "Change a company job. Omitted fields stay as they are. Requires --revision",
9095
+ "aliases": [],
9096
+ "hidden": false,
9097
+ "helpOption": true,
9098
+ "helpCommand": false,
9099
+ "usage": "[options] <jobId>",
9100
+ "helpText": [],
9101
+ "arguments": [
9102
+ {
9103
+ "name": "jobId",
9104
+ "required": true,
9105
+ "variadic": false,
9106
+ "description": "Job id from hq outposts status --company <slug>"
9107
+ }
9108
+ ],
9109
+ "options": [
9110
+ {
9111
+ "flags": "--company <slug>",
9112
+ "description": "Company that owns the Outpost",
9113
+ "hidden": false
9114
+ },
9115
+ {
9116
+ "flags": "--outpost <name|id>",
9117
+ "description": "Which company Outpost, when the company has more than one",
9118
+ "hidden": false
9119
+ },
9120
+ {
9121
+ "flags": "--revision <rev>",
9122
+ "description": "Accepted revision you last saw. Required for edit and delete --yes",
9123
+ "hidden": false
9124
+ },
9125
+ {
9126
+ "flags": "--prompt <text>",
9127
+ "description": "What the job should do. Omit to keep the current prompt",
9128
+ "hidden": false
9129
+ },
9130
+ {
9131
+ "flags": "--timezone <name>",
9132
+ "description": "IANA timezone, such as America/New_York. Omit to keep the current timezone",
9133
+ "hidden": false
9134
+ },
9135
+ {
9136
+ "flags": "--cron <expr>",
9137
+ "description": "Recurring schedule: rate(N minutes|hours|days), a five-field cron with * for day of month and month (such as \"*/15 * * * *\"; translated to the AWS form), or cron(MIN HOUR ? * DOW *). Omit to keep the current schedule",
9138
+ "hidden": false
9139
+ },
9140
+ {
9141
+ "flags": "--at <iso>",
9142
+ "description": "One-time ISO-8601 instant. Do not combine with --cron",
9143
+ "hidden": false
9144
+ },
9145
+ {
9146
+ "flags": "--script <text>",
9147
+ "description": "Precondition script stored with the job. Omit to keep the current script",
9148
+ "hidden": false
9149
+ },
9150
+ {
9151
+ "flags": "--context <json>",
9152
+ "description": "JSON object stored with the job. Omit to keep the current context",
9153
+ "hidden": false
9154
+ },
9155
+ {
9156
+ "flags": "--clear-script",
9157
+ "description": "Remove the job's precondition script",
9158
+ "hidden": false
9159
+ },
9160
+ {
9161
+ "flags": "--clear-context",
9162
+ "description": "Remove the job's stored context",
9163
+ "hidden": false
9164
+ },
9165
+ {
9166
+ "flags": "--json",
9167
+ "description": "Emit the result as JSON",
9168
+ "hidden": false
9169
+ }
9170
+ ],
9171
+ "subcommands": []
9172
+ },
9173
+ {
9174
+ "name": "pause",
9175
+ "description": "Pause a company job",
9176
+ "aliases": [],
9177
+ "hidden": false,
9178
+ "helpOption": true,
9179
+ "helpCommand": false,
9180
+ "usage": "[options] <jobId>",
9181
+ "helpText": [],
9182
+ "arguments": [
9183
+ {
9184
+ "name": "jobId",
9185
+ "required": true,
9186
+ "variadic": false,
9187
+ "description": "Job id from hq outposts status --company <slug>"
9188
+ }
9189
+ ],
9190
+ "options": [
9191
+ {
9192
+ "flags": "--company <slug>",
9193
+ "description": "Company that owns the Outpost",
9194
+ "hidden": false
9195
+ },
9196
+ {
9197
+ "flags": "--outpost <name|id>",
9198
+ "description": "Which company Outpost, when the company has more than one",
9199
+ "hidden": false
9200
+ },
9201
+ {
9202
+ "flags": "--revision <rev>",
9203
+ "description": "Accepted revision you last saw. Required for edit and delete --yes",
9204
+ "hidden": false
9205
+ },
9206
+ {
9207
+ "flags": "--json",
9208
+ "description": "Emit the result as JSON",
9209
+ "hidden": false
9210
+ }
9211
+ ],
9212
+ "subcommands": []
9213
+ },
9214
+ {
9215
+ "name": "resume",
9216
+ "description": "Resume a paused company job",
9217
+ "aliases": [],
9218
+ "hidden": false,
9219
+ "helpOption": true,
9220
+ "helpCommand": false,
9221
+ "usage": "[options] <jobId>",
9222
+ "helpText": [],
9223
+ "arguments": [
9224
+ {
9225
+ "name": "jobId",
9226
+ "required": true,
9227
+ "variadic": false,
9228
+ "description": "Job id from hq outposts status --company <slug>"
9229
+ }
9230
+ ],
9231
+ "options": [
9232
+ {
9233
+ "flags": "--company <slug>",
9234
+ "description": "Company that owns the Outpost",
9235
+ "hidden": false
9236
+ },
9237
+ {
9238
+ "flags": "--outpost <name|id>",
9239
+ "description": "Which company Outpost, when the company has more than one",
9240
+ "hidden": false
9241
+ },
9242
+ {
9243
+ "flags": "--revision <rev>",
9244
+ "description": "Accepted revision you last saw. Required for edit and delete --yes",
9245
+ "hidden": false
9246
+ },
9247
+ {
9248
+ "flags": "--json",
9249
+ "description": "Emit the result as JSON",
9250
+ "hidden": false
9251
+ }
9252
+ ],
9253
+ "subcommands": []
9254
+ },
9255
+ {
9256
+ "name": "delete",
9257
+ "description": "Delete a company job (requires --yes)",
9258
+ "aliases": [],
9259
+ "hidden": false,
9260
+ "helpOption": true,
9261
+ "helpCommand": false,
9262
+ "usage": "[options] <jobId>",
9263
+ "helpText": [],
9264
+ "arguments": [
9265
+ {
9266
+ "name": "jobId",
9267
+ "required": true,
9268
+ "variadic": false,
9269
+ "description": "Job id from hq outposts status --company <slug>"
9270
+ }
9271
+ ],
9272
+ "options": [
9273
+ {
9274
+ "flags": "--company <slug>",
9275
+ "description": "Company that owns the Outpost",
9276
+ "hidden": false
9277
+ },
9278
+ {
9279
+ "flags": "--outpost <name|id>",
9280
+ "description": "Which company Outpost, when the company has more than one",
9281
+ "hidden": false
9282
+ },
9283
+ {
9284
+ "flags": "--revision <rev>",
9285
+ "description": "Accepted revision you last saw. Required for edit and delete --yes",
9286
+ "hidden": false
9287
+ },
9288
+ {
9289
+ "flags": "--yes",
9290
+ "description": "Confirm deletion of this job",
9291
+ "hidden": false
9292
+ },
9293
+ {
9294
+ "flags": "--json",
9295
+ "description": "Emit the result as JSON",
9296
+ "hidden": false
9297
+ }
9298
+ ],
9299
+ "subcommands": []
9300
+ },
9301
+ {
9302
+ "name": "run-now",
9303
+ "description": "Run a company job once now",
9304
+ "aliases": [],
9305
+ "hidden": false,
9306
+ "helpOption": true,
9307
+ "helpCommand": false,
9308
+ "usage": "[options] <jobId>",
9309
+ "helpText": [],
9310
+ "arguments": [
9311
+ {
9312
+ "name": "jobId",
9313
+ "required": true,
9314
+ "variadic": false,
9315
+ "description": "Job id from hq outposts status --company <slug>"
9316
+ }
9317
+ ],
9318
+ "options": [
9319
+ {
9320
+ "flags": "--company <slug>",
9321
+ "description": "Company that owns the Outpost",
9322
+ "hidden": false
9323
+ },
9324
+ {
9325
+ "flags": "--outpost <name|id>",
9326
+ "description": "Which company Outpost, when the company has more than one",
9327
+ "hidden": false
9328
+ },
9329
+ {
9330
+ "flags": "--revision <rev>",
9331
+ "description": "Accepted revision you last saw. Required for edit and delete --yes",
9332
+ "hidden": false
9333
+ },
9334
+ {
9335
+ "flags": "--json",
9336
+ "description": "Emit the result as JSON",
9337
+ "hidden": false
9338
+ }
9339
+ ],
9340
+ "subcommands": []
9066
9341
  }
9067
9342
  ]
9068
9343
  },
@@ -9271,6 +9546,11 @@ export const COMMAND_CATALOG = [
9271
9546
  "description": "Company slug",
9272
9547
  "hidden": false
9273
9548
  },
9549
+ {
9550
+ "flags": "--outpost <name|id>",
9551
+ "description": "Which company Outpost, when the company has more than one",
9552
+ "hidden": false
9553
+ },
9274
9554
  {
9275
9555
  "flags": "--json",
9276
9556
  "description": "Emit raw JSON",
@@ -9324,6 +9604,11 @@ export const COMMAND_CATALOG = [
9324
9604
  "description": "Request a new sign-in link for the company's Outpost (owner or admin)",
9325
9605
  "hidden": false
9326
9606
  },
9607
+ {
9608
+ "flags": "--outpost <name|id>",
9609
+ "description": "Which company Outpost, when the company has more than one",
9610
+ "hidden": false
9611
+ },
9327
9612
  {
9328
9613
  "flags": "--json",
9329
9614
  "description": "Emit raw JSON",
@@ -9360,6 +9645,11 @@ export const COMMAND_CATALOG = [
9360
9645
  "description": "Sign in the company's Outpost (owner or admin)",
9361
9646
  "hidden": false
9362
9647
  },
9648
+ {
9649
+ "flags": "--outpost <name|id>",
9650
+ "description": "Which company Outpost, when the company has more than one",
9651
+ "hidden": false
9652
+ },
9363
9653
  {
9364
9654
  "flags": "--json",
9365
9655
  "description": "Emit raw JSON",
@@ -9936,6 +10226,25 @@ export const COMMAND_CATALOG = [
9936
10226
  ],
9937
10227
  "subcommands": []
9938
10228
  },
10229
+ {
10230
+ "name": "hook-engine-path",
10231
+ "description": "Print the offline, version-pinned native hook engine path",
10232
+ "aliases": [],
10233
+ "hidden": false,
10234
+ "helpOption": true,
10235
+ "helpCommand": false,
10236
+ "usage": "[options]",
10237
+ "helpText": [],
10238
+ "arguments": [],
10239
+ "options": [
10240
+ {
10241
+ "flags": "--repair",
10242
+ "description": "Repair the pinned copy after closing running hook processes",
10243
+ "hidden": false
10244
+ }
10245
+ ],
10246
+ "subcommands": []
10247
+ },
9939
10248
  {
9940
10249
  "name": "ontology",
9941
10250
  "description": "Checkpoint ontology steps run by the checkpoint sibling (gated by checkpoint.ontology)",
@@ -12916,6 +13225,16 @@ export const COMMAND_CATALOG = [
12916
13225
  "description": "Resolve the opt-in hq-flags gate used by the client-health report hook.",
12917
13226
  "hidden": true
12918
13227
  },
13228
+ {
13229
+ "flags": "--sweep-temp-homes",
13230
+ "description": "Delete idle temp homes (90+ minutes untouched, not in use): tmp.* folders holding .rustup or .cargo, and hq-temp-home.* folders left by the wrapper. Reports GB freed.",
13231
+ "hidden": false
13232
+ },
13233
+ {
13234
+ "flags": "--dry-run",
13235
+ "description": "With --sweep-temp-homes, list what would be removed and delete nothing.",
13236
+ "hidden": false
13237
+ },
12919
13238
  {
12920
13239
  "flags": "--yes",
12921
13240
  "description": "Skip the interactive --fix confirmation (non-interactive use).",
@@ -17106,6 +17425,11 @@ export const COMMAND_CATALOG = [
17106
17425
  "description": "claude | codex | grok",
17107
17426
  "hidden": false
17108
17427
  },
17428
+ {
17429
+ "flags": "--runner <kind>",
17430
+ "description": "process (default) | subagent: register a lane an in-session Claude subagent runs; skips admission and starts no process",
17431
+ "hidden": false
17432
+ },
17109
17433
  {
17110
17434
  "flags": "--remote-control",
17111
17435
  "description": "Open a Claude lane in Remote Control using account a for login and the selected account for inference",
@@ -17185,6 +17509,47 @@ export const COMMAND_CATALOG = [
17185
17509
  ],
17186
17510
  "subcommands": []
17187
17511
  },
17512
+ {
17513
+ "name": "progress",
17514
+ "description": "Report on a subagent lane: a progress line, the final envelope, or a failure",
17515
+ "aliases": [],
17516
+ "hidden": false,
17517
+ "helpOption": true,
17518
+ "helpCommand": false,
17519
+ "usage": "[options] <lane-id>",
17520
+ "helpText": [],
17521
+ "arguments": [
17522
+ {
17523
+ "name": "lane-id",
17524
+ "required": true,
17525
+ "variadic": false,
17526
+ "description": "Lane id"
17527
+ }
17528
+ ],
17529
+ "options": [
17530
+ {
17531
+ "flags": "--line <text>",
17532
+ "description": "Progress line shown as the lane's last line",
17533
+ "hidden": false
17534
+ },
17535
+ {
17536
+ "flags": "--envelope <path>",
17537
+ "description": "Final hq-lane-envelope.v1 file; the lane state follows its decision",
17538
+ "hidden": false
17539
+ },
17540
+ {
17541
+ "flags": "--failed <reason>",
17542
+ "description": "Mark the lane failed when the subagent ended without an envelope",
17543
+ "hidden": false
17544
+ },
17545
+ {
17546
+ "flags": "--json",
17547
+ "description": "JSON on stdout (always)",
17548
+ "hidden": false
17549
+ }
17550
+ ],
17551
+ "subcommands": []
17552
+ },
17188
17553
  {
17189
17554
  "name": "approve-target",
17190
17555
  "description": "",
@@ -8,6 +8,7 @@ import chalk from "chalk";
8
8
  import * as os from "node:os";
9
9
  import { ensureCognitoToken } from "../utils/cognito-session.js";
10
10
  import { vaultApiFetch } from "../utils/vault-api.js";
11
+ import { redactAgentInboxItem } from "../lib/agent-kit/inbox-redact.js";
11
12
  import { markInboxDone, mergeAgentInbox, readDoneIds, summarizeInboxEntry } from "../lib/agent-kit/inbox-state.js";
12
13
  import { agentKitPaths } from "../lib/agent-kit/paths.js";
13
14
  import { requireExternalCreds } from "./agent-kit.js";
@@ -36,7 +37,7 @@ export function registerAgentInboxCommand(agent) {
36
37
  });
37
38
  const rows = entries
38
39
  .filter((e) => opts.all || !done.has(e.id))
39
- .map((e) => summarizeInboxEntry(e, done.has(e.id)));
40
+ .map((e) => summarizeInboxEntry(redactAgentInboxItem(e), done.has(e.id)));
40
41
  if (opts.json) {
41
42
  console.log(JSON.stringify({ count: rows.length, messages: rows, ...(note ? { note } : {}) }, null, 2));
42
43
  return;
@@ -1074,7 +1074,8 @@ export function registerCloudCommands(program) {
1074
1074
  }
1075
1075
  }
1076
1076
  else {
1077
- log(chalk.green(`\n✓ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ${result.filesSkipped} skipped)`));
1077
+ const skipSummary = formatPushSkipSummary(result);
1078
+ log(chalk.green(`\n✓ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ${skipSummary})`));
1078
1079
  }
1079
1080
  await syncHealth.succeeded();
1080
1081
  const exitCode = scopeExcludedExitCode(result.filesExcludedByScope + staleRefusalCount);
@@ -2058,6 +2059,35 @@ function scopeLabel(slug) {
2058
2059
  return "personal (companies/personal)";
2059
2060
  return slug;
2060
2061
  }
2062
+ function formatPushSkipSummary(result) {
2063
+ const detail = result.filesSkippedDetail;
2064
+ if (!detail)
2065
+ return `${result.filesSkipped} skipped`;
2066
+ const parts = [];
2067
+ if (detail.upToDate > 0)
2068
+ parts.push(`${detail.upToDate} already up to date`);
2069
+ const otherTotal = detail.conflict + detail.brokenLink + detail.other;
2070
+ if (otherTotal > 0) {
2071
+ const named = [];
2072
+ if (detail.conflict > 0) {
2073
+ named.push(`${detail.conflict} conflict${detail.conflict === 1 ? "" : "s"}`);
2074
+ }
2075
+ if (detail.brokenLink > 0) {
2076
+ named.push(`${detail.brokenLink} broken link${detail.brokenLink === 1 ? "" : "s"}`);
2077
+ }
2078
+ if (detail.other > 0)
2079
+ named.push(`${detail.other} other`);
2080
+ if (detail.conflict > 0 || detail.brokenLink > 0) {
2081
+ parts.push(`${otherTotal} skipped (${named.join(", ")})`);
2082
+ }
2083
+ else {
2084
+ parts.push(`${otherTotal} skipped`);
2085
+ }
2086
+ }
2087
+ if (parts.length === 0)
2088
+ return `${result.filesSkipped} skipped`;
2089
+ return parts.join(", ");
2090
+ }
2061
2091
  function formatBytes(bytes) {
2062
2092
  if (bytes === 0)
2063
2093
  return "0 B";
@@ -14,8 +14,25 @@ export type RefreshVaultAccessDependencies = {
14
14
  now: () => Date;
15
15
  hqAvailable: boolean;
16
16
  runHq?: (args: string[], cwd: string) => HqResult;
17
+ /** How long to wait for another refresh to release the manifest lock. */
18
+ lockWaitMs?: number;
17
19
  };
18
20
  export declare function createRefreshVaultAccessDependencies(cwd: string, env: NodeJS.ProcessEnv, now: () => Date): RefreshVaultAccessDependencies;
19
21
  export declare function runRefreshVaultAccess(args: string[], deps: RefreshVaultAccessDependencies): UtilityOutput;
22
+ /** Test seam: runs after a waiter has judged the lock stale and before it takes the lock over. */
23
+ export interface ManifestLockHooks {
24
+ afterStaleCheck?: () => void;
25
+ }
26
+ /**
27
+ * Take the manifest lock and return its owner token, or undefined when the
28
+ * lock stays busy past `waitMs`. The lock file is created by hard-linking a
29
+ * file that already holds the token, so it never exists without an owner. A
30
+ * stale lock (older than LOCK_STALE_MS, or whose holder on this host has
31
+ * exited) is taken over through removeLockIf, so two waiters that both judge
32
+ * it stale cannot remove each other's new lock.
33
+ */
34
+ export declare function acquireManifestLock(lock: string, waitMs: number, hooks?: ManifestLockHooks): string | undefined;
35
+ /** Release the lock if `token` still owns it. Returns false when another process has taken it over. */
36
+ export declare function releaseManifestLock(lock: string, token: string): boolean;
20
37
  export declare function registerCoreRefreshVaultAccessNative(core: Command): void;
21
38
  //# sourceMappingURL=core-refresh-vault-access-native.d.ts.map