@skrr-ai/cli 0.1.110 → 0.1.111

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 (391) hide show
  1. package/bin/run.js +15 -1
  2. package/dist/base-command.d.ts +31 -3
  3. package/dist/base-command.js +136 -22
  4. package/dist/commands/actions/list.js +2 -1
  5. package/dist/commands/agenda/trigger/create.js +1 -1
  6. package/dist/commands/agenda/trigger/list.js +2 -1
  7. package/dist/commands/agent-groups/list.js +2 -1
  8. package/dist/commands/agents/actions/list.js +2 -1
  9. package/dist/commands/agents/always-on/status.js +5 -0
  10. package/dist/commands/agents/chat.js +4 -1
  11. package/dist/commands/agents/duplicate.js +4 -0
  12. package/dist/commands/agents/eval/list.js +2 -1
  13. package/dist/commands/agents/files/list.js +2 -1
  14. package/dist/commands/agents/folders/list.js +2 -1
  15. package/dist/commands/agents/goals/list.js +2 -1
  16. package/dist/commands/agents/intuitions/list.js +8 -5
  17. package/dist/commands/agents/list.d.ts +12 -0
  18. package/dist/commands/agents/list.js +45 -8
  19. package/dist/commands/agents/releases/known-issues/list.js +2 -1
  20. package/dist/commands/agents/releases/list.js +5 -1
  21. package/dist/commands/agents/releases/trusted-publishers/list.js +2 -1
  22. package/dist/commands/agents/roles/list.js +2 -1
  23. package/dist/commands/agents/skills/list.js +2 -1
  24. package/dist/commands/agents/todos/list.js +2 -1
  25. package/dist/commands/agents/triggers/list.js +2 -1
  26. package/dist/commands/api-keys/list.js +2 -1
  27. package/dist/commands/apps/channel.d.ts +20 -0
  28. package/dist/commands/apps/channel.js +64 -0
  29. package/dist/commands/apps/check-draft.d.ts +12 -0
  30. package/dist/commands/apps/check-draft.js +41 -0
  31. package/dist/commands/apps/check.d.ts +42 -0
  32. package/dist/commands/apps/check.js +91 -0
  33. package/dist/commands/apps/create.d.ts +15 -0
  34. package/dist/commands/apps/create.js +59 -0
  35. package/dist/commands/apps/data/put.d.ts +18 -0
  36. package/dist/commands/apps/data/put.js +72 -0
  37. package/dist/commands/apps/data/query.d.ts +20 -0
  38. package/dist/commands/apps/data/query.js +88 -0
  39. package/dist/commands/apps/disclosure.d.ts +16 -0
  40. package/dist/commands/apps/disclosure.js +71 -0
  41. package/dist/commands/apps/file/cat.d.ts +15 -0
  42. package/dist/commands/apps/file/cat.js +50 -0
  43. package/dist/commands/apps/file/ls.d.ts +13 -0
  44. package/dist/commands/apps/file/ls.js +47 -0
  45. package/dist/commands/apps/file/mv.d.ts +15 -0
  46. package/dist/commands/apps/file/mv.js +49 -0
  47. package/dist/commands/apps/file/rm.d.ts +15 -0
  48. package/dist/commands/apps/file/rm.js +53 -0
  49. package/dist/commands/apps/file/write.d.ts +17 -0
  50. package/dist/commands/apps/file/write.js +81 -0
  51. package/dist/commands/apps/install.d.ts +19 -0
  52. package/dist/commands/apps/install.js +136 -0
  53. package/dist/commands/apps/installations/list.d.ts +11 -0
  54. package/dist/commands/apps/installations/list.js +49 -0
  55. package/dist/commands/apps/installations/show.d.ts +12 -0
  56. package/dist/commands/apps/installations/show.js +61 -0
  57. package/dist/commands/apps/layout/set.d.ts +11 -0
  58. package/dist/commands/apps/layout/set.js +125 -0
  59. package/dist/commands/apps/layout/show.d.ts +9 -0
  60. package/dist/commands/apps/layout/show.js +33 -0
  61. package/dist/commands/apps/list.d.ts +10 -0
  62. package/dist/commands/apps/list.js +45 -0
  63. package/dist/commands/apps/logs.d.ts +13 -0
  64. package/dist/commands/apps/logs.js +55 -0
  65. package/dist/commands/apps/preview.d.ts +12 -0
  66. package/dist/commands/apps/preview.js +39 -0
  67. package/dist/commands/apps/publish/propose.d.ts +14 -0
  68. package/dist/commands/apps/publish/propose.js +45 -0
  69. package/dist/commands/apps/pull.d.ts +14 -0
  70. package/dist/commands/apps/pull.js +56 -0
  71. package/dist/commands/apps/push.d.ts +15 -0
  72. package/dist/commands/apps/push.js +75 -0
  73. package/dist/commands/apps/reconsent.d.ts +13 -0
  74. package/dist/commands/apps/reconsent.js +67 -0
  75. package/dist/commands/apps/report.d.ts +20 -0
  76. package/dist/commands/apps/report.js +63 -0
  77. package/dist/commands/apps/resume.d.ts +12 -0
  78. package/dist/commands/apps/resume.js +36 -0
  79. package/dist/commands/apps/settings/set.d.ts +13 -0
  80. package/dist/commands/apps/settings/set.js +54 -0
  81. package/dist/commands/apps/settings/show.d.ts +11 -0
  82. package/dist/commands/apps/settings/show.js +31 -0
  83. package/dist/commands/apps/show.d.ts +12 -0
  84. package/dist/commands/apps/show.js +49 -0
  85. package/dist/commands/apps/suspend.d.ts +12 -0
  86. package/dist/commands/apps/suspend.js +35 -0
  87. package/dist/commands/apps/uninstall.d.ts +13 -0
  88. package/dist/commands/apps/uninstall.js +43 -0
  89. package/dist/commands/apps/upgrade.d.ts +14 -0
  90. package/dist/commands/apps/upgrade.js +49 -0
  91. package/dist/commands/apps/version/create.d.ts +14 -0
  92. package/dist/commands/apps/version/create.js +53 -0
  93. package/dist/commands/apps/version/show.d.ts +12 -0
  94. package/dist/commands/apps/version/show.js +39 -0
  95. package/dist/commands/apps/versions.d.ts +12 -0
  96. package/dist/commands/apps/versions.js +40 -0
  97. package/dist/commands/apps/webhooks/list.d.ts +12 -0
  98. package/dist/commands/apps/webhooks/list.js +47 -0
  99. package/dist/commands/characters/list.js +2 -1
  100. package/dist/commands/chats/files/list.js +2 -1
  101. package/dist/commands/chats/folders/list.js +2 -1
  102. package/dist/commands/chats/list.js +2 -1
  103. package/dist/commands/chats/spaces/list.js +2 -1
  104. package/dist/commands/chats/widgets/list.js +2 -1
  105. package/dist/commands/code/jobs/list.js +4 -1
  106. package/dist/commands/commerce/incidents/list.js +2 -1
  107. package/dist/commands/commitments/accounting.js +3 -0
  108. package/dist/commands/commitments/action-proposals.d.ts +8 -0
  109. package/dist/commands/commitments/action-proposals.js +17 -2
  110. package/dist/commands/commitments/cost.d.ts +11 -0
  111. package/dist/commands/commitments/cost.js +25 -0
  112. package/dist/commands/commitments/create.js +6 -1
  113. package/dist/commands/commitments/endpoints/list.js +2 -1
  114. package/dist/commands/commitments/links/list.js +2 -1
  115. package/dist/commands/commitments/list.js +2 -1
  116. package/dist/commands/commitments/liveness.d.ts +30 -0
  117. package/dist/commands/commitments/liveness.js +22 -5
  118. package/dist/commands/commitments/pack/list.js +2 -1
  119. package/dist/commands/commitments/preflight.js +6 -2
  120. package/dist/commands/commitments/update.js +10 -1
  121. package/dist/commands/compass/list.js +2 -1
  122. package/dist/commands/context.js +7 -1
  123. package/dist/commands/convos/list.js +3 -2
  124. package/dist/commands/dm/list.js +2 -1
  125. package/dist/commands/dm/work.d.ts +19 -0
  126. package/dist/commands/dm/work.js +54 -0
  127. package/dist/commands/feeds/list.js +2 -1
  128. package/dist/commands/followups/list.js +2 -1
  129. package/dist/commands/followups/plans/cancel.d.ts +13 -0
  130. package/dist/commands/followups/plans/cancel.js +26 -0
  131. package/dist/commands/followups/plans/create.d.ts +11 -0
  132. package/dist/commands/followups/plans/create.js +35 -0
  133. package/dist/commands/followups/plans/list.d.ts +13 -0
  134. package/dist/commands/followups/plans/list.js +50 -0
  135. package/dist/commands/followups/plans/observability.d.ts +11 -0
  136. package/dist/commands/followups/plans/observability.js +46 -0
  137. package/dist/commands/followups/plans/revise.d.ts +13 -0
  138. package/dist/commands/followups/plans/revise.js +35 -0
  139. package/dist/commands/followups/plans/show.d.ts +11 -0
  140. package/dist/commands/followups/plans/show.js +32 -0
  141. package/dist/commands/goals/key-results/list.js +2 -1
  142. package/dist/commands/goals/labels/list.js +3 -2
  143. package/dist/commands/goals/list.js +3 -2
  144. package/dist/commands/grants/list.js +2 -1
  145. package/dist/commands/harnesses/grants/list.js +2 -1
  146. package/dist/commands/harnesses/leases/list.js +2 -1
  147. package/dist/commands/harnesses/list.js +10 -1
  148. package/dist/commands/ingress/list.js +2 -1
  149. package/dist/commands/initiatives/list.js +2 -1
  150. package/dist/commands/instruction-blocks/list.js +2 -1
  151. package/dist/commands/instructions/list.js +2 -1
  152. package/dist/commands/integrations/connections/list.js +2 -1
  153. package/dist/commands/integrations/tools/list.js +2 -1
  154. package/dist/commands/labels/list.js +3 -2
  155. package/dist/commands/learning/adapters.d.ts +16 -0
  156. package/dist/commands/learning/adapters.js +44 -0
  157. package/dist/commands/machines/dedicated/list.js +2 -1
  158. package/dist/commands/machines/hosted/list.js +2 -1
  159. package/dist/commands/machines/list.js +2 -1
  160. package/dist/commands/machines/show.js +5 -2
  161. package/dist/commands/measures/list.js +2 -1
  162. package/dist/commands/memory/list.js +2 -1
  163. package/dist/commands/memory/proposals/list.js +2 -1
  164. package/dist/commands/memory/stores/list.js +2 -1
  165. package/dist/commands/memory/topics/list.js +2 -1
  166. package/dist/commands/memory/versions/list.js +2 -1
  167. package/dist/commands/messages/list.js +2 -1
  168. package/dist/commands/northstars/intents/list.js +2 -1
  169. package/dist/commands/northstars/list.js +2 -1
  170. package/dist/commands/northstars/recommendations/list.js +2 -1
  171. package/dist/commands/outbox/list.js +2 -1
  172. package/dist/commands/profiles/list.js +2 -1
  173. package/dist/commands/projects/docs/list.js +8 -1
  174. package/dist/commands/projects/updates/list.js +2 -1
  175. package/dist/commands/proposals/list.js +2 -1
  176. package/dist/commands/requests/comments/list.js +2 -1
  177. package/dist/commands/requests/list.js +2 -1
  178. package/dist/commands/shares/list.js +2 -1
  179. package/dist/commands/shortcuts/list.js +2 -1
  180. package/dist/commands/signals/monitors/list.js +2 -1
  181. package/dist/commands/signals/schemas/list.js +2 -1
  182. package/dist/commands/signals/sources/list.js +2 -1
  183. package/dist/commands/space-directory-views/list.js +2 -1
  184. package/dist/commands/spaces/actions/list.js +4 -3
  185. package/dist/commands/spaces/briefs/list.js +2 -1
  186. package/dist/commands/spaces/cycles/list.js +2 -1
  187. package/dist/commands/spaces/files/folders/list.js +2 -1
  188. package/dist/commands/spaces/files/list.js +3 -2
  189. package/dist/commands/spaces/heartbeats/list.js +3 -2
  190. package/dist/commands/spaces/labels/list.js +3 -2
  191. package/dist/commands/spaces/list.d.ts +3 -18
  192. package/dist/commands/spaces/list.js +28 -35
  193. package/dist/commands/spaces/live/cards/list.js +2 -1
  194. package/dist/commands/spaces/members/list.d.ts +1 -0
  195. package/dist/commands/spaces/members/list.js +4 -1
  196. package/dist/commands/spaces/show.js +2 -2
  197. package/dist/commands/spaces/skills/list.js +6 -2
  198. package/dist/commands/spaces/states/list.js +2 -1
  199. package/dist/commands/spaces/views/list.js +2 -1
  200. package/dist/commands/spaces/widgets/list.js +3 -2
  201. package/dist/commands/spaces/workflow-templates/list.js +2 -1
  202. package/dist/commands/spaces/workflows/fixtures/list.js +2 -1
  203. package/dist/commands/spaces/workflows/list.js +3 -2
  204. package/dist/commands/spaces/workflows/proposals/list.js +2 -1
  205. package/dist/commands/spaces/workflows/triggers/list.js +2 -1
  206. package/dist/commands/store/acquisitions/list.js +2 -1
  207. package/dist/commands/store/admissions/list.js +17 -1
  208. package/dist/commands/store/advisories/list.js +2 -1
  209. package/dist/commands/store/follows/list.js +2 -1
  210. package/dist/commands/store/publishers/domains/list.js +2 -1
  211. package/dist/commands/store/reports/list.js +2 -1
  212. package/dist/commands/subscriptions/list.js +2 -1
  213. package/dist/commands/tasks/actionability.js +7 -30
  214. package/dist/commands/tasks/activity.js +3 -7
  215. package/dist/commands/tasks/approvals/list.js +2 -1
  216. package/dist/commands/tasks/assign.d.ts +1 -0
  217. package/dist/commands/tasks/assign.js +43 -7
  218. package/dist/commands/tasks/attachments/list.js +2 -1
  219. package/dist/commands/tasks/chat/send.js +34 -0
  220. package/dist/commands/tasks/comments/add.js +6 -1
  221. package/dist/commands/tasks/comments/list.js +2 -1
  222. package/dist/commands/tasks/complete.js +26 -2
  223. package/dist/commands/tasks/continue.d.ts +18 -0
  224. package/dist/commands/tasks/continue.js +54 -0
  225. package/dist/commands/tasks/create-tree.d.ts +5 -0
  226. package/dist/commands/tasks/create-tree.js +399 -219
  227. package/dist/commands/tasks/create.d.ts +1 -0
  228. package/dist/commands/tasks/create.js +63 -11
  229. package/dist/commands/tasks/deliverable/add.js +10 -3
  230. package/dist/commands/tasks/deliverable/list.js +2 -1
  231. package/dist/commands/tasks/events/list.js +2 -1
  232. package/dist/commands/tasks/execution-state.d.ts +12 -0
  233. package/dist/commands/tasks/execution-state.js +28 -0
  234. package/dist/commands/tasks/expectations/assess.js +40 -5
  235. package/dist/commands/tasks/guide.d.ts +10 -0
  236. package/dist/commands/tasks/guide.js +20 -0
  237. package/dist/commands/tasks/labels/list.js +2 -1
  238. package/dist/commands/tasks/list.d.ts +19 -0
  239. package/dist/commands/tasks/list.js +97 -4
  240. package/dist/commands/tasks/move.js +10 -2
  241. package/dist/commands/tasks/preflight.d.ts +14 -0
  242. package/dist/commands/tasks/preflight.js +77 -0
  243. package/dist/commands/tasks/resource/list.js +2 -1
  244. package/dist/commands/tasks/result/submit.js +10 -1
  245. package/dist/commands/tasks/review.js +6 -1
  246. package/dist/commands/tasks/revisions.d.ts +2 -0
  247. package/dist/commands/tasks/revisions.js +8 -1
  248. package/dist/commands/tasks/show.js +17 -11
  249. package/dist/commands/tasks/start.d.ts +1 -0
  250. package/dist/commands/tasks/start.js +35 -0
  251. package/dist/commands/tasks/templates/list.js +2 -1
  252. package/dist/commands/tasks/timeline.d.ts +5 -0
  253. package/dist/commands/tasks/timeline.js +9 -1
  254. package/dist/commands/tasks/update.d.ts +1 -0
  255. package/dist/commands/tasks/update.js +25 -2
  256. package/dist/commands/tasks/updates/add.js +6 -1
  257. package/dist/commands/tasks/updates/list.js +2 -1
  258. package/dist/commands/tasks/upsert.d.ts +1 -0
  259. package/dist/commands/tasks/upsert.js +8 -1
  260. package/dist/commands/token/list.js +2 -1
  261. package/dist/commands/tokens/list.js +2 -1
  262. package/dist/commands/tones/list.js +4 -2
  263. package/dist/commands/triggers/list.js +2 -1
  264. package/dist/commands/views/list.js +2 -1
  265. package/dist/commands/webhooks/list.js +2 -1
  266. package/dist/commands/whoami.js +1 -1
  267. package/dist/commands/widgets/list.js +2 -1
  268. package/dist/commands/widgets/save-as-app.d.ts +13 -0
  269. package/dist/commands/widgets/save-as-app.js +65 -0
  270. package/dist/commands/work-views/list.js +2 -1
  271. package/dist/commands/worklog/list.js +2 -1
  272. package/dist/commands/workspaces/list.js +3 -2
  273. package/dist/commands/workspaces/members.d.ts +1 -0
  274. package/dist/commands/workspaces/members.js +5 -2
  275. package/dist/generated/managed-instruction-guides.json +2 -2
  276. package/dist/help.js +7 -0
  277. package/dist/lib/agent-proactive-baseline.d.ts +9 -0
  278. package/dist/lib/agent-proactive-baseline.js +44 -0
  279. package/dist/lib/agentic-stream.d.ts +4 -1
  280. package/dist/lib/agentic-stream.js +29 -4
  281. package/dist/lib/appData.d.ts +75 -0
  282. package/dist/lib/appData.js +274 -0
  283. package/dist/lib/appInstallations.d.ts +117 -0
  284. package/dist/lib/appInstallations.js +960 -0
  285. package/dist/lib/appSettings.d.ts +3 -0
  286. package/dist/lib/appSettings.js +71 -0
  287. package/dist/lib/appWebhooks.d.ts +7 -0
  288. package/dist/lib/appWebhooks.js +59 -0
  289. package/dist/lib/apps-command.d.ts +44 -0
  290. package/dist/lib/apps-command.js +164 -0
  291. package/dist/lib/apps.d.ts +45 -0
  292. package/dist/lib/apps.js +148 -0
  293. package/dist/lib/appsCheck.d.ts +12 -0
  294. package/dist/lib/appsCheck.js +173 -0
  295. package/dist/lib/appsFs.d.ts +58 -0
  296. package/dist/lib/appsFs.js +384 -0
  297. package/dist/lib/auth-failure.d.ts +20 -0
  298. package/dist/lib/auth-failure.js +40 -3
  299. package/dist/lib/cli-installers.d.ts +9 -2
  300. package/dist/lib/command-miss.js +107 -0
  301. package/dist/lib/commitment-loop-status.js +25 -3
  302. package/dist/lib/commitments.d.ts +44 -3
  303. package/dist/lib/commitments.js +107 -9
  304. package/dist/lib/compasses.d.ts +4 -0
  305. package/dist/lib/compasses.js +11 -0
  306. package/dist/lib/daemon-setup.js +7 -7
  307. package/dist/lib/daemonHandoff.js +3 -2
  308. package/dist/lib/dedicated-ssh.d.ts +2 -0
  309. package/dist/lib/dedicated-ssh.js +98 -28
  310. package/dist/lib/json-output.d.ts +33 -0
  311. package/dist/lib/json-output.js +37 -0
  312. package/dist/lib/list-output.d.ts +9 -4
  313. package/dist/lib/list-output.js +36 -9
  314. package/dist/lib/lookbackPlans.d.ts +13 -0
  315. package/dist/lib/lookbackPlans.js +68 -0
  316. package/dist/lib/machines.d.ts +27 -6
  317. package/dist/lib/machines.js +25 -14
  318. package/dist/lib/member-output.d.ts +20 -0
  319. package/dist/lib/member-output.js +57 -0
  320. package/dist/lib/preflight-copy.d.ts +7 -0
  321. package/dist/lib/preflight-copy.js +31 -0
  322. package/dist/lib/roles.d.ts +2 -2
  323. package/dist/lib/task-admission.d.ts +9 -0
  324. package/dist/lib/task-admission.js +35 -0
  325. package/dist/lib/task-batch.d.ts +4 -0
  326. package/dist/lib/task-batch.js +2 -0
  327. package/dist/lib/task-operations.d.ts +25 -0
  328. package/dist/lib/task-operations.js +123 -0
  329. package/dist/lib/task-preflight.d.ts +35 -0
  330. package/dist/lib/task-preflight.js +121 -0
  331. package/dist/lib/task-resource-references.d.ts +23 -0
  332. package/dist/lib/task-resource-references.js +119 -0
  333. package/dist/lib/task-spec-verification.d.ts +42 -0
  334. package/dist/lib/task-spec-verification.js +101 -0
  335. package/dist/lib/task-work.d.ts +11 -0
  336. package/dist/lib/task-work.js +41 -0
  337. package/dist/lib/task-write-attribution.d.ts +26 -0
  338. package/dist/lib/task-write-attribution.js +47 -0
  339. package/dist/lib/tasks.d.ts +13 -0
  340. package/dist/lib/tasks.js +61 -8
  341. package/dist/lib/triggers.d.ts +7 -0
  342. package/dist/lib/triggers.js +54 -4
  343. package/dist/lib/usage-discovery.d.ts +4 -0
  344. package/dist/lib/usage-discovery.js +14 -4
  345. package/dist/lib/widgetApps.d.ts +10 -0
  346. package/dist/lib/widgetApps.js +47 -0
  347. package/dist/lib/widgetStaticScan.js +25 -1
  348. package/dist/lib/workspaces.d.ts +11 -4
  349. package/dist/lib/workspaces.js +7 -3
  350. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.d.ts +14 -1
  351. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.js +47 -2
  352. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonToolApproval.d.ts +49 -1
  353. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonToolApproval.js +26 -0
  354. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonWire.d.ts +118 -0
  355. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonWire.js +614 -0
  356. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.d.ts +2 -0
  357. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.js +15 -2
  358. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refreshClassification.d.ts +5 -0
  359. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refreshClassification.js +3 -1
  360. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/sessionRevocation.d.ts +177 -0
  361. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/sessionRevocation.js +484 -0
  362. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.d.ts +11 -0
  363. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.js +46 -7
  364. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.d.ts +232 -0
  365. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.js +372 -0
  366. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/types.d.ts +17 -1
  367. package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/types.js +12 -1
  368. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.d.ts +14 -1
  369. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.js +45 -2
  370. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonToolApproval.d.ts +49 -1
  371. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonToolApproval.js +24 -0
  372. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonWire.d.ts +118 -0
  373. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonWire.js +608 -0
  374. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.d.ts +2 -0
  375. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.js +15 -2
  376. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refreshClassification.d.ts +5 -0
  377. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refreshClassification.js +3 -1
  378. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/sessionRevocation.d.ts +177 -0
  379. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/sessionRevocation.js +472 -0
  380. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.d.ts +11 -0
  381. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.js +44 -6
  382. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.d.ts +232 -0
  383. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.js +360 -0
  384. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/types.d.ts +17 -1
  385. package/dist/node_modules/@skrr-ai/auth-core/dist/esm/types.js +12 -1
  386. package/dist/node_modules/@skrr-ai/auth-core/package.json +30 -0
  387. package/dist/node_modules/@skrr-ai/data-provider/index.js +25239 -18730
  388. package/docs/v1/operations.md +52 -0
  389. package/docs/v1/space-search.md +19 -0
  390. package/oclif.manifest.json +4719 -479
  391. package/package.json +23 -2
@@ -1,3 +1,4 @@
1
+ import { type AgentListParams } from '@skrr-ai/data-provider';
1
2
  import { BaseCommand } from '../../base-command';
2
3
  /**
3
4
  * One agent document → one table row.
@@ -38,11 +39,22 @@ export declare function agentRow(a: Record<string, unknown>): {
38
39
  * Exported and pure so the wording is testable without an oclif runtime.
39
40
  */
40
41
  export declare function noAgentsEmptyMessage(bin?: string): string;
42
+ /** Server-side selection: never download and locally filter the historical inventory. */
43
+ export declare function agentListParams(flags: Record<string, unknown>): AgentListParams;
41
44
  export default class AgentsList extends BaseCommand {
42
45
  static description: string;
43
46
  static examples: string[];
44
47
  static flags: {
45
48
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
49
+ q: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
50
+ harness: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
51
+ readiness: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
52
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
53
+ cursor: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
54
+ all: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
55
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
56
+ compact: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
57
+ ndjson: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
46
58
  };
47
59
  run(): Promise<void>;
48
60
  }
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.orderPinnedFirst = orderPinnedFirst;
4
4
  exports.agentRow = agentRow;
5
5
  exports.noAgentsEmptyMessage = noAgentsEmptyMessage;
6
+ exports.agentListParams = agentListParams;
7
+ const list_output_1 = require("../../lib/list-output");
6
8
  const core_1 = require("@oclif/core");
7
9
  const data_provider_1 = require("@skrr-ai/data-provider");
8
10
  const base_command_1 = require("../../base-command");
@@ -57,14 +59,36 @@ function noAgentsEmptyMessage(bin = 'skrr') {
57
59
  ` → Start a coding session and one will be created for you: \`${bin} code\`\n` +
58
60
  ` → Or create one explicitly: \`${bin} agents create --name "..." --provider anthropic --model claude-sonnet-4-5 --target hosted-machine\``);
59
61
  }
62
+ /** Server-side selection: never download and locally filter the historical inventory. */
63
+ function agentListParams(flags) {
64
+ return {
65
+ requiredPermission: data_provider_1.PermissionBits.VIEW,
66
+ search: flags.q,
67
+ harnessId: flags.harness,
68
+ readiness: flags.readiness,
69
+ limit: flags.all ? undefined : flags.limit ?? 50,
70
+ cursor: flags.cursor,
71
+ // Explicit field selection may need a field outside the summary projection.
72
+ fields: flags.all || flags.fields ? undefined : 'summary',
73
+ withReadiness: 1,
74
+ };
75
+ }
60
76
  class AgentsList extends base_command_1.BaseCommand {
61
77
  static description = 'List agents available to you';
62
78
  static examples = [
63
79
  '<%= config.bin %> agents list',
64
- '<%= config.bin %> agents list --json',
80
+ '<%= config.bin %> agents list --q scout --harness <harness-id> --readiness ready --compact --json',
81
+ '<%= config.bin %> agents list --all --json',
65
82
  ];
66
83
  static flags = {
84
+ ...list_output_1.listOutputFlags,
67
85
  json: core_1.Flags.boolean({ description: 'Output as JSON' }),
86
+ q: core_1.Flags.string({ description: 'Search Agent name or description on the server' }),
87
+ harness: core_1.Flags.string({ description: 'An enabled execution target must reference this harness ID' }),
88
+ readiness: core_1.Flags.string({ options: ['ready', 'blocked', 'unknown'], description: 'Filter server-side unattended execution admission; ready is a prerequisite check, not a guarantee of task authorization' }),
89
+ limit: core_1.Flags.integer({ min: 1, max: 100, description: 'Page size (default 50; maximum 100)', exclusive: ['all'] }),
90
+ cursor: core_1.Flags.string({ description: 'Continue from next_cursor in the previous response', exclusive: ['all'] }),
91
+ all: core_1.Flags.boolean({ description: 'Full historical inventory and full Agent payloads (unbounded); filters still apply' }),
68
92
  };
69
93
  async run() {
70
94
  this.requireAuth();
@@ -75,15 +99,20 @@ class AgentsList extends base_command_1.BaseCommand {
75
99
  // web client passes when listing agents a user can see (see
76
100
  // client/src/routes/ChatRoute.tsx). EDIT would restrict to agents the
77
101
  // user can modify.
78
- response = await data_provider_1.dataService.listAgents({
79
- requiredPermission: data_provider_1.PermissionBits.VIEW,
80
- });
102
+ response = await data_provider_1.dataService.listAgents(agentListParams(flags));
81
103
  }
82
104
  catch (err) {
83
105
  this.handleApiError(err);
84
106
  }
85
- if (flags.json) {
86
- this.log(JSON.stringify((0, web_url_1.withDataUrls)(this.cliConfig.baseURL, response, web_url_1.agentUrlFrom), null, 2));
107
+ // An older server silently ignoring readiness would return unsafe matches.
108
+ if (flags.readiness && response?.readiness_filter_applied !== flags.readiness) {
109
+ this.error('The server did not confirm execution-readiness filtering. Upgrade the server before selecting executors with --readiness.');
110
+ }
111
+ if (flags.json || flags.ndjson) {
112
+ this.printList((0, list_output_1.shapeListResponse)((0, web_url_1.withDataUrls)(this.cliConfig.baseURL, response, web_url_1.agentUrlFrom), {
113
+ resource: 'agent', fields: flags.fields, compact: flags.compact,
114
+ requestedLimit: flags.all ? undefined : flags.limit ?? 50,
115
+ }), Boolean(flags.ndjson));
87
116
  return;
88
117
  }
89
118
  // AgentListResponse shape has varied — accept { data }, { agents }, or a
@@ -92,8 +121,10 @@ class AgentsList extends base_command_1.BaseCommand {
92
121
  const items = Array.isArray(r)
93
122
  ? r
94
123
  : (r?.data ?? r?.agents ?? []);
124
+ for (const note of (0, list_output_1.textModeProjectionNotes)(flags))
125
+ this.log(note);
95
126
  if (items.length === 0) {
96
- this.log(noAgentsEmptyMessage(this.config.bin));
127
+ this.log(flags.q || flags.harness || flags.readiness ? 'No agents match these filters. Broaden --q, --harness, or --readiness.' : noAgentsEmptyMessage(this.config.bin));
97
128
  return;
98
129
  }
99
130
  // Best-effort: a list that cannot read pins still lists, unordered by them.
@@ -107,15 +138,21 @@ class AgentsList extends base_command_1.BaseCommand {
107
138
  const rows = orderPinnedFirst(items, preferences).map((item) => ({
108
139
  pinned: item.pinned ? 'pinned' : '',
109
140
  ...agentRow(item),
141
+ harness: (0, format_1.formatCell)(item.harnessName ?? item.harnessId, 'unassigned'),
142
+ readiness: (0, format_1.formatCell)(item.executionReadiness?.state, 'unknown'),
110
143
  url: (0, web_url_1.agentUrlFrom)(this.cliConfig.baseURL, item) ?? '-',
111
144
  }));
112
145
  (0, format_1.renderTable)(rows, [
113
146
  { key: 'pinned', header: 'PINNED' },
114
147
  { key: 'id', header: 'ID' },
115
148
  { key: 'name', header: 'NAME', maxWidth: 30 },
116
- { key: 'description', header: 'DESCRIPTION', maxWidth: 60 },
149
+ { key: 'harness', header: 'HARNESS', maxWidth: 30 },
150
+ { key: 'readiness', header: 'ADMISSION' },
117
151
  { key: 'url', header: 'URL', maxWidth: 72 },
118
152
  ], (line) => this.log(line));
153
+ const page = response;
154
+ if (page?.has_more && page.after)
155
+ this.log(`More agents available. Continue with --cursor ${page.after}`);
119
156
  }
120
157
  }
121
158
  exports.default = AgentsList;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const data_provider_1 = require("@skrr-ai/data-provider");
5
6
  const base_command_1 = require("../../../../base-command");
@@ -34,7 +35,7 @@ class AgentsReleasesKnownIssuesList extends base_command_1.BaseCommand {
34
35
  }
35
36
  const issues = release.knownIssues ?? [];
36
37
  if (flags.json) {
37
- this.log(JSON.stringify({ releaseId: release.id, knownIssues: issues }, null, 2));
38
+ this.printJsonResult((0, list_output_1.listResult)({ releaseId: release.id, knownIssues: issues }, 'knownIssues'));
38
39
  return;
39
40
  }
40
41
  if (issues.length === 0) {
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const data_provider_1 = require("@skrr-ai/data-provider");
5
6
  const base_command_1 = require("../../../base-command");
@@ -35,7 +36,10 @@ class AgentsReleasesList extends base_command_1.BaseCommand {
35
36
  this.requireAuth();
36
37
  const { args, flags } = await this.parse(AgentsReleasesList);
37
38
  const result = await data_provider_1.dataService.getAgentReleases(args.agentId);
38
- this.log(flags.json ? this.agentJson(args.agentId, result) : renderReleases(result.data ?? []));
39
+ if (flags.json)
40
+ this.printJsonResult((0, list_output_1.listResult)(this.withAgentContext(args.agentId, result)));
41
+ else
42
+ this.log(renderReleases(result.data ?? []));
39
43
  if (!flags.json)
40
44
  this.printAgentUrl(args.agentId);
41
45
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const data_provider_1 = require("@skrr-ai/data-provider");
5
6
  const base_command_1 = require("../../../../base-command");
@@ -27,7 +28,7 @@ class AgentsReleasesTrustedPublishersList extends base_command_1.BaseCommand {
27
28
  const result = await data_provider_1.dataService.getAgentTrustedPublishers(args.agentId);
28
29
  const bindings = result.data ?? [];
29
30
  if (flags.json) {
30
- this.log(JSON.stringify(bindings, null, 2));
31
+ this.printJsonResult((0, list_output_1.listResult)(bindings));
31
32
  return;
32
33
  }
33
34
  if (bindings.length === 0) {
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const base_command_1 = require("../../../base-command");
5
6
  const roles_1 = require("../../../lib/roles");
@@ -15,7 +16,7 @@ class RolesList extends base_command_1.BaseCommand {
15
16
  try {
16
17
  const result = await roles_1.roleApi.list(args.id);
17
18
  if (flags.json) {
18
- this.log(JSON.stringify(result, null, 2));
19
+ this.printJsonResult((0, list_output_1.listResult)(result, 'roles'));
19
20
  return;
20
21
  }
21
22
  for (const role of result.roles)
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const data_provider_1 = require("@skrr-ai/data-provider");
5
6
  const base_command_1 = require("../../../base-command");
@@ -37,7 +38,7 @@ class AgentsSkillsList extends base_command_1.BaseCommand {
37
38
  this.handleApiError(err);
38
39
  }
39
40
  if (flags.json) {
40
- this.log(JSON.stringify(response, null, 2));
41
+ this.printJsonResult((0, list_output_1.listResult)(response));
41
42
  return;
42
43
  }
43
44
  if (flags.quiet)
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const base_command_1 = require("../../../base-command");
5
6
  const schedule_1 = require("../../../lib/schedule");
@@ -33,7 +34,7 @@ class AgentsTodosList extends base_command_1.BaseCommand {
33
34
  this.handleApiError(err);
34
35
  }
35
36
  if (flags.json) {
36
- this.log(JSON.stringify(response, null, 2));
37
+ this.printJsonResult((0, list_output_1.listResult)(response, 'todos'));
37
38
  return;
38
39
  }
39
40
  (0, schedule_1.renderTodoList)(response.todos ?? [], (line) => this.log(line));
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const base_command_1 = require("../../../base-command");
5
6
  const triggers_1 = require("../../../lib/triggers");
@@ -53,7 +54,7 @@ class AgentsTriggersList extends base_command_1.BaseCommand {
53
54
  this.handleApiError(err);
54
55
  }
55
56
  if (flags.json) {
56
- this.log(JSON.stringify(response, null, 2));
57
+ this.printJsonResult((0, list_output_1.listResult)(response, 'triggers'));
57
58
  return;
58
59
  }
59
60
  (0, triggers_1.renderTriggerList)(response.triggers ?? [], (line) => this.log(line));
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const list_output_1 = require("../../lib/list-output");
3
4
  const core_1 = require("@oclif/core");
4
5
  const base_command_1 = require("../../base-command");
5
6
  const managed_agent_keys_1 = require("../../lib/managed-agent-keys");
@@ -23,7 +24,7 @@ class ApiKeysList extends base_command_1.BaseCommand {
23
24
  return;
24
25
  }
25
26
  if (flags.json) {
26
- this.log(JSON.stringify(keys, null, 2));
27
+ this.printJsonResult((0, list_output_1.listResult)(keys));
27
28
  return;
28
29
  }
29
30
  if (keys.length === 0) {
@@ -0,0 +1,20 @@
1
+ import { AppsCommand } from '../../lib/apps-command';
2
+ /**
3
+ * Which update channel an installation follows. The Store's channel (`store channel`), for an installed App:
4
+ * `manual` waits for you, `auto_minor` lets the platform move it to a later public version of the same
5
+ * interface major, and `beta` also lets it take versions their publisher released as beta (the channel is the
6
+ * opt-in). A move never widens what you approved: a version that asks for more waits for `apps reconsent`.
7
+ */
8
+ export default class AppsChannel extends AppsCommand {
9
+ static description: string;
10
+ static examples: string[];
11
+ static args: {
12
+ installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
13
+ channel: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
14
+ };
15
+ static flags: {
16
+ expected: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const data_provider_1 = require("@skrr-ai/data-provider");
5
+ const apps_command_1 = require("../../lib/apps-command");
6
+ /**
7
+ * Which update channel an installation follows. The Store's channel (`store channel`), for an installed App:
8
+ * `manual` waits for you, `auto_minor` lets the platform move it to a later public version of the same
9
+ * interface major, and `beta` also lets it take versions their publisher released as beta (the channel is the
10
+ * opt-in). A move never widens what you approved: a version that asks for more waits for `apps reconsent`.
11
+ */
12
+ class AppsChannel extends apps_command_1.AppsCommand {
13
+ static description = 'Choose how an installation is updated: manual (you move it), auto_minor (the platform moves it to a later public version of the same major) or beta (also versions released as beta). A version that asks for more than you approved still waits for your approval.';
14
+ static examples = [
15
+ '<%= config.bin %> apps channel appi_abc auto_minor',
16
+ '<%= config.bin %> apps channel appi_abc beta',
17
+ '<%= config.bin %> apps channel appi_abc manual',
18
+ ];
19
+ static args = {
20
+ installation: core_1.Args.string({
21
+ description: 'The installation id (appi_...)',
22
+ required: true,
23
+ ignoreStdin: true,
24
+ }),
25
+ channel: core_1.Args.string({
26
+ description: `One of ${data_provider_1.STORE_UPDATE_CHANNELS.join(', ')}`,
27
+ required: true,
28
+ ignoreStdin: true,
29
+ options: [...data_provider_1.STORE_UPDATE_CHANNELS],
30
+ }),
31
+ };
32
+ static flags = {
33
+ expected: core_1.Flags.string({
34
+ description: 'Change it only if it still follows this channel; otherwise nothing changes',
35
+ options: [...data_provider_1.STORE_UPDATE_CHANNELS],
36
+ }),
37
+ json: core_1.Flags.boolean({ description: 'Output the result as JSON' }),
38
+ };
39
+ async run() {
40
+ this.requireAuth();
41
+ const { args, flags } = await this.parse(AppsChannel);
42
+ try {
43
+ const result = await data_provider_1.dataService.setAppInstallationUpdatePolicy(args.installation, {
44
+ channel: args.channel,
45
+ ...(flags.expected === undefined ? {} : { expectedChannel: flags.expected }),
46
+ });
47
+ if (flags.json) {
48
+ this.printJsonResult(result);
49
+ return;
50
+ }
51
+ this.log(result.unchanged
52
+ ? `${result.installationId} already follows the ${result.updatePolicy} channel.`
53
+ : `${result.installationId} now follows the ${result.updatePolicy} channel.`);
54
+ if (result.updatePolicy === 'beta') {
55
+ this.log('Versions their publisher released as beta can now reach this installation. A version that asks for more than you approved waits for your approval (`' +
56
+ `${this.config.bin} apps reconsent\`).`);
57
+ }
58
+ }
59
+ catch (error) {
60
+ this.failInstallation(error);
61
+ }
62
+ }
63
+ }
64
+ exports.default = AppsChannel;
@@ -0,0 +1,12 @@
1
+ import { AppsCommand } from '../../lib/apps-command';
2
+ export default class AppsCheckDraft extends AppsCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ app: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const data_provider_1 = require("@skrr-ai/data-provider");
5
+ const apps_command_1 = require("../../lib/apps-command");
6
+ const appsCheck_1 = require("../../lib/appsCheck");
7
+ class AppsCheckDraft extends apps_command_1.AppsCommand {
8
+ static description = "Run the platform's check on an app's draft in the cloud: the same findings `apps check` gives a local directory, plus the rule that app.json's id is the app's slug.";
9
+ static examples = ['<%= config.bin %> apps check-draft habit-tracker'];
10
+ static args = {
11
+ app: core_1.Args.string({
12
+ description: 'The app id (app_...) or its slug',
13
+ required: true,
14
+ ignoreStdin: true,
15
+ }),
16
+ };
17
+ static flags = {
18
+ json: core_1.Flags.boolean({ description: 'Output { appId, rev, check } as JSON' }),
19
+ };
20
+ async run() {
21
+ this.requireAuth();
22
+ const { args, flags } = await this.parse(AppsCheckDraft);
23
+ const appId = await this.appId(args.app);
24
+ try {
25
+ const result = await data_provider_1.dataService.checkAppDraft(appId);
26
+ if (flags.json) {
27
+ this.printJsonResult(result, { ok: result.check.ok });
28
+ }
29
+ else {
30
+ this.log(`rev: ${result.rev}`);
31
+ this.log((0, appsCheck_1.formatAppCheckReport)(result.check).join('\n'));
32
+ }
33
+ if (!result.check.ok)
34
+ this.exit(1);
35
+ }
36
+ catch (error) {
37
+ this.failApps(error);
38
+ }
39
+ }
40
+ }
41
+ exports.default = AppsCheckDraft;
@@ -0,0 +1,42 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * `skrr apps check [dir]`: the offline self-check of an app's package, the one a harness runs in Bash
4
+ * before it writes the draft back.
5
+ *
6
+ * It extends `Command`, not `BaseCommand`, for the reason `widgets check` does: it reads a directory
7
+ * and prints, so it must work with no sign-in and no network (a sandboxed harness has neither), and it
8
+ * reaches no API, so there is no route for the CLI/API parity spec to hold it to. The check is the
9
+ * platform's own (`checkAppPackage`, which the server runs on a draft too), plus the frame heuristics of
10
+ * `skrr widgets check` on the entry files. Use `apps check-draft <app>` to run the server's check on a
11
+ * draft in the cloud.
12
+ *
13
+ * Exit codes: 0 no error finding; 1 at least one; 2 the directory could not be read. `--strict` also fails
14
+ * on a warning that is not merely low-key (an `info` finding about the store is not one); `--store` also
15
+ * fails when a finding would keep the app out of the store (a block, something it could not read under the
16
+ * default policy). A security finding is never an ERROR: drafts and private installs are not held back.
17
+ */
18
+ export declare const APPS_CHECK_EXIT: {
19
+ readonly ok: 0;
20
+ readonly notOk: 1;
21
+ readonly unreadable: 2;
22
+ };
23
+ export default class AppsCheck extends Command {
24
+ static description: string;
25
+ static examples: string[];
26
+ static args: {
27
+ dir: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
28
+ };
29
+ static flags: {
30
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
31
+ strict: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
32
+ store: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
33
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
34
+ };
35
+ /**
36
+ * `--json` output. This command extends `Command` and not `BaseCommand` (it is offline), so it cannot call
37
+ * `printJsonResult`; it says `ok` the same way (`withOk`: the report's own `ok` is kept, a failure document
38
+ * already carries `ok: false`).
39
+ */
40
+ private printJson;
41
+ run(): Promise<void>;
42
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPS_CHECK_EXIT = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const appsCheck_1 = require("../../lib/appsCheck");
6
+ const appsFs_1 = require("../../lib/appsFs");
7
+ const json_output_1 = require("../../lib/json-output");
8
+ /**
9
+ * `skrr apps check [dir]`: the offline self-check of an app's package, the one a harness runs in Bash
10
+ * before it writes the draft back.
11
+ *
12
+ * It extends `Command`, not `BaseCommand`, for the reason `widgets check` does: it reads a directory
13
+ * and prints, so it must work with no sign-in and no network (a sandboxed harness has neither), and it
14
+ * reaches no API, so there is no route for the CLI/API parity spec to hold it to. The check is the
15
+ * platform's own (`checkAppPackage`, which the server runs on a draft too), plus the frame heuristics of
16
+ * `skrr widgets check` on the entry files. Use `apps check-draft <app>` to run the server's check on a
17
+ * draft in the cloud.
18
+ *
19
+ * Exit codes: 0 no error finding; 1 at least one; 2 the directory could not be read. `--strict` also fails
20
+ * on a warning that is not merely low-key (an `info` finding about the store is not one); `--store` also
21
+ * fails when a finding would keep the app out of the store (a block, something it could not read under the
22
+ * default policy). A security finding is never an ERROR: drafts and private installs are not held back.
23
+ */
24
+ exports.APPS_CHECK_EXIT = { ok: 0, notOk: 1, unreadable: 2 };
25
+ class AppsCheck extends core_1.Command {
26
+ static description = "Check an app's package in a local directory, offline: the manifest, the files it names, sizes, JavaScript syntax, what the frame would refuse, and the capability calls the script makes against the ones app.json declares. Needs no sign-in. A symbolic link in the directory is refused, never followed.";
27
+ static examples = [
28
+ '<%= config.bin %> apps check',
29
+ '<%= config.bin %> apps check ./habit-tracker --json',
30
+ ];
31
+ static args = {
32
+ dir: core_1.Args.string({
33
+ description: 'The package directory (default: the current one)',
34
+ required: false,
35
+ ignoreStdin: true,
36
+ }),
37
+ };
38
+ static flags = {
39
+ json: core_1.Flags.boolean({ description: 'Output the report as JSON' }),
40
+ strict: core_1.Flags.boolean({
41
+ description: 'Also fail (exit 1) on warnings (a low-key "info" finding about the store is not one)',
42
+ default: false,
43
+ }),
44
+ store: core_1.Flags.boolean({
45
+ description: 'Also fail (exit 1) when a finding would keep the app out of the store: a block, or something the check could not read that the policy holds back',
46
+ default: false,
47
+ }),
48
+ id: core_1.Flags.string({ description: "The app's slug: the manifest id must be it" }),
49
+ };
50
+ /**
51
+ * `--json` output. This command extends `Command` and not `BaseCommand` (it is offline), so it cannot call
52
+ * `printJsonResult`; it says `ok` the same way (`withOk`: the report's own `ok` is kept, a failure document
53
+ * already carries `ok: false`).
54
+ */
55
+ printJson(value) {
56
+ const text = JSON.stringify((0, json_output_1.withOk)(value), null, 2);
57
+ this.log(text);
58
+ }
59
+ async run() {
60
+ const { args, flags } = await this.parse(AppsCheck);
61
+ let pkg;
62
+ try {
63
+ pkg = (0, appsFs_1.readPackageDir)(args.dir ?? '.');
64
+ }
65
+ catch (error) {
66
+ const message = error instanceof appsFs_1.AppsFsError ? error.message : String(error?.message ?? error);
67
+ const code = error instanceof appsFs_1.AppsFsError ? error.code : 'unreadable';
68
+ if (flags.json) {
69
+ this.printJson({ ok: false, error: { code, message } });
70
+ }
71
+ else {
72
+ process.stderr.write(`error: ${message}\n`);
73
+ }
74
+ this.exit(exports.APPS_CHECK_EXIT.unreadable);
75
+ }
76
+ const report = (0, appsCheck_1.checkLocalFiles)(pkg.files, flags.id === undefined ? {} : { expectedId: flags.id });
77
+ if (flags.json) {
78
+ this.printJson({ ...report, root: pkg.root, skipped: pkg.skipped });
79
+ }
80
+ else {
81
+ this.log((0, appsCheck_1.formatAppCheckReport)(report).join('\n'));
82
+ if (pkg.skipped.length > 0)
83
+ this.log(`left out: ${pkg.skipped.join(', ')}`);
84
+ }
85
+ const warnings = report.issues.filter((i) => i.severity === 'warn' && i.tier !== 'info').length;
86
+ const keptOut = flags.store && report.security !== undefined && !report.security.store.admitted;
87
+ const failed = !report.ok || (flags.strict && warnings > 0) || keptOut;
88
+ this.exit(failed ? exports.APPS_CHECK_EXIT.notOk : exports.APPS_CHECK_EXIT.ok);
89
+ }
90
+ }
91
+ exports.default = AppsCheck;
@@ -0,0 +1,15 @@
1
+ import { AppsCommand } from '../../lib/apps-command';
2
+ export default class AppsCreate extends AppsCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ slug: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ from: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const data_provider_1 = require("@skrr-ai/data-provider");
5
+ const apps_command_1 = require("../../lib/apps-command");
6
+ const appsFs_1 = require("../../lib/appsFs");
7
+ const appsCheck_1 = require("../../lib/appsCheck");
8
+ class AppsCreate extends apps_command_1.AppsCommand {
9
+ static description = 'Create an app and its draft. With no --from you get a starter that already passes the check; with --from <dir> the draft starts as that directory (read without following symbolic links).';
10
+ static examples = [
11
+ '<%= config.bin %> apps create habit-tracker --name "Habit Tracker"',
12
+ '<%= config.bin %> apps create habit-tracker --from ./habit-tracker',
13
+ ];
14
+ static args = {
15
+ slug: core_1.Args.string({
16
+ description: "The app's slug: lower-case words joined by single hyphens. It is the id in app.json.",
17
+ required: true,
18
+ ignoreStdin: true,
19
+ }),
20
+ };
21
+ static flags = {
22
+ json: core_1.Flags.boolean({ description: 'Output { app, draft, check } as JSON' }),
23
+ name: core_1.Flags.string({ description: 'Shown name for the starter manifest' }),
24
+ description: core_1.Flags.string({ description: 'One-sentence description for the starter manifest' }),
25
+ from: core_1.Flags.string({
26
+ description: 'Start from the files of this directory instead of the starter',
27
+ }),
28
+ };
29
+ async run() {
30
+ this.requireAuth();
31
+ const { args, flags } = await this.parse(AppsCreate);
32
+ try {
33
+ const files = flags.from
34
+ ? (0, appsFs_1.readPackageDir)(flags.from).files.map((file) => ({
35
+ path: file.path,
36
+ content: file.content,
37
+ }))
38
+ : undefined;
39
+ const result = await data_provider_1.dataService.createApp({
40
+ slug: args.slug,
41
+ ...(flags.name === undefined ? {} : { name: flags.name }),
42
+ ...(flags.description === undefined ? {} : { description: flags.description }),
43
+ ...(files === undefined ? {} : { files }),
44
+ });
45
+ if (flags.json) {
46
+ this.printJsonResult(result);
47
+ return;
48
+ }
49
+ this.log(`created ${result.app.id} (${result.app.slug})`);
50
+ this.log(`rev: ${result.draft.rev}, files: ${result.draft.files.count}`);
51
+ for (const line of (0, appsCheck_1.formatAppCheckReport)(result.check))
52
+ this.log(line);
53
+ }
54
+ catch (error) {
55
+ this.failApps(error);
56
+ }
57
+ }
58
+ }
59
+ exports.default = AppsCreate;
@@ -0,0 +1,18 @@
1
+ import { AppsCommand } from '../../../lib/apps-command';
2
+ export default class AppsDataPut extends AppsCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ collection: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ doc: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'from-file': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ stdin: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ 'expected-rev': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ };
17
+ run(): Promise<void>;
18
+ }