@stoneforge/quarry 0.1.0

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 (330) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +160 -0
  3. package/dist/api/index.d.ts +8 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +8 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/api/quarry-api.d.ts +268 -0
  8. package/dist/api/quarry-api.d.ts.map +1 -0
  9. package/dist/api/quarry-api.js +3905 -0
  10. package/dist/api/quarry-api.js.map +1 -0
  11. package/dist/api/types.d.ts +1359 -0
  12. package/dist/api/types.d.ts.map +1 -0
  13. package/dist/api/types.js +204 -0
  14. package/dist/api/types.js.map +1 -0
  15. package/dist/bin/sf.d.ts +3 -0
  16. package/dist/bin/sf.d.ts.map +1 -0
  17. package/dist/bin/sf.js +9 -0
  18. package/dist/bin/sf.js.map +1 -0
  19. package/dist/cli/commands/admin.d.ts +11 -0
  20. package/dist/cli/commands/admin.d.ts.map +1 -0
  21. package/dist/cli/commands/admin.js +465 -0
  22. package/dist/cli/commands/admin.js.map +1 -0
  23. package/dist/cli/commands/alias.d.ts +8 -0
  24. package/dist/cli/commands/alias.d.ts.map +1 -0
  25. package/dist/cli/commands/alias.js +70 -0
  26. package/dist/cli/commands/alias.js.map +1 -0
  27. package/dist/cli/commands/channel.d.ts +13 -0
  28. package/dist/cli/commands/channel.d.ts.map +1 -0
  29. package/dist/cli/commands/channel.js +680 -0
  30. package/dist/cli/commands/channel.js.map +1 -0
  31. package/dist/cli/commands/completion.d.ts +8 -0
  32. package/dist/cli/commands/completion.d.ts.map +1 -0
  33. package/dist/cli/commands/completion.js +87 -0
  34. package/dist/cli/commands/completion.js.map +1 -0
  35. package/dist/cli/commands/config.d.ts +12 -0
  36. package/dist/cli/commands/config.d.ts.map +1 -0
  37. package/dist/cli/commands/config.js +242 -0
  38. package/dist/cli/commands/config.js.map +1 -0
  39. package/dist/cli/commands/crud.d.ts +64 -0
  40. package/dist/cli/commands/crud.d.ts.map +1 -0
  41. package/dist/cli/commands/crud.js +805 -0
  42. package/dist/cli/commands/crud.js.map +1 -0
  43. package/dist/cli/commands/dep.d.ts +16 -0
  44. package/dist/cli/commands/dep.d.ts.map +1 -0
  45. package/dist/cli/commands/dep.js +499 -0
  46. package/dist/cli/commands/dep.js.map +1 -0
  47. package/dist/cli/commands/document.d.ts +12 -0
  48. package/dist/cli/commands/document.d.ts.map +1 -0
  49. package/dist/cli/commands/document.js +1039 -0
  50. package/dist/cli/commands/document.js.map +1 -0
  51. package/dist/cli/commands/embeddings.d.ts +12 -0
  52. package/dist/cli/commands/embeddings.d.ts.map +1 -0
  53. package/dist/cli/commands/embeddings.js +273 -0
  54. package/dist/cli/commands/embeddings.js.map +1 -0
  55. package/dist/cli/commands/entity.d.ts +16 -0
  56. package/dist/cli/commands/entity.d.ts.map +1 -0
  57. package/dist/cli/commands/entity.js +522 -0
  58. package/dist/cli/commands/entity.js.map +1 -0
  59. package/dist/cli/commands/gc.d.ts +10 -0
  60. package/dist/cli/commands/gc.d.ts.map +1 -0
  61. package/dist/cli/commands/gc.js +257 -0
  62. package/dist/cli/commands/gc.js.map +1 -0
  63. package/dist/cli/commands/help.d.ts +11 -0
  64. package/dist/cli/commands/help.d.ts.map +1 -0
  65. package/dist/cli/commands/help.js +169 -0
  66. package/dist/cli/commands/help.js.map +1 -0
  67. package/dist/cli/commands/history.d.ts +9 -0
  68. package/dist/cli/commands/history.d.ts.map +1 -0
  69. package/dist/cli/commands/history.js +160 -0
  70. package/dist/cli/commands/history.js.map +1 -0
  71. package/dist/cli/commands/identity.d.ts +18 -0
  72. package/dist/cli/commands/identity.d.ts.map +1 -0
  73. package/dist/cli/commands/identity.js +698 -0
  74. package/dist/cli/commands/identity.js.map +1 -0
  75. package/dist/cli/commands/inbox.d.ts +20 -0
  76. package/dist/cli/commands/inbox.d.ts.map +1 -0
  77. package/dist/cli/commands/inbox.js +493 -0
  78. package/dist/cli/commands/inbox.js.map +1 -0
  79. package/dist/cli/commands/init.d.ts +20 -0
  80. package/dist/cli/commands/init.d.ts.map +1 -0
  81. package/dist/cli/commands/init.js +144 -0
  82. package/dist/cli/commands/init.js.map +1 -0
  83. package/dist/cli/commands/install.d.ts +9 -0
  84. package/dist/cli/commands/install.d.ts.map +1 -0
  85. package/dist/cli/commands/install.js +200 -0
  86. package/dist/cli/commands/install.js.map +1 -0
  87. package/dist/cli/commands/library.d.ts +12 -0
  88. package/dist/cli/commands/library.d.ts.map +1 -0
  89. package/dist/cli/commands/library.js +665 -0
  90. package/dist/cli/commands/library.js.map +1 -0
  91. package/dist/cli/commands/message.d.ts +11 -0
  92. package/dist/cli/commands/message.d.ts.map +1 -0
  93. package/dist/cli/commands/message.js +608 -0
  94. package/dist/cli/commands/message.js.map +1 -0
  95. package/dist/cli/commands/plan.d.ts +17 -0
  96. package/dist/cli/commands/plan.d.ts.map +1 -0
  97. package/dist/cli/commands/plan.js +698 -0
  98. package/dist/cli/commands/plan.js.map +1 -0
  99. package/dist/cli/commands/playbook.d.ts +12 -0
  100. package/dist/cli/commands/playbook.d.ts.map +1 -0
  101. package/dist/cli/commands/playbook.js +730 -0
  102. package/dist/cli/commands/playbook.js.map +1 -0
  103. package/dist/cli/commands/reset.d.ts +12 -0
  104. package/dist/cli/commands/reset.d.ts.map +1 -0
  105. package/dist/cli/commands/reset.js +306 -0
  106. package/dist/cli/commands/reset.js.map +1 -0
  107. package/dist/cli/commands/serve.d.ts +11 -0
  108. package/dist/cli/commands/serve.d.ts.map +1 -0
  109. package/dist/cli/commands/serve.js +106 -0
  110. package/dist/cli/commands/serve.js.map +1 -0
  111. package/dist/cli/commands/stats.d.ts +8 -0
  112. package/dist/cli/commands/stats.d.ts.map +1 -0
  113. package/dist/cli/commands/stats.js +82 -0
  114. package/dist/cli/commands/stats.js.map +1 -0
  115. package/dist/cli/commands/sync.d.ts +14 -0
  116. package/dist/cli/commands/sync.d.ts.map +1 -0
  117. package/dist/cli/commands/sync.js +370 -0
  118. package/dist/cli/commands/sync.js.map +1 -0
  119. package/dist/cli/commands/task.d.ts +25 -0
  120. package/dist/cli/commands/task.d.ts.map +1 -0
  121. package/dist/cli/commands/task.js +1153 -0
  122. package/dist/cli/commands/task.js.map +1 -0
  123. package/dist/cli/commands/team.d.ts +13 -0
  124. package/dist/cli/commands/team.d.ts.map +1 -0
  125. package/dist/cli/commands/team.js +471 -0
  126. package/dist/cli/commands/team.js.map +1 -0
  127. package/dist/cli/commands/workflow.d.ts +16 -0
  128. package/dist/cli/commands/workflow.d.ts.map +1 -0
  129. package/dist/cli/commands/workflow.js +753 -0
  130. package/dist/cli/commands/workflow.js.map +1 -0
  131. package/dist/cli/completion.d.ts +28 -0
  132. package/dist/cli/completion.d.ts.map +1 -0
  133. package/dist/cli/completion.js +295 -0
  134. package/dist/cli/completion.js.map +1 -0
  135. package/dist/cli/db.d.ts +38 -0
  136. package/dist/cli/db.d.ts.map +1 -0
  137. package/dist/cli/db.js +90 -0
  138. package/dist/cli/db.js.map +1 -0
  139. package/dist/cli/formatter.d.ts +87 -0
  140. package/dist/cli/formatter.d.ts.map +1 -0
  141. package/dist/cli/formatter.js +464 -0
  142. package/dist/cli/formatter.js.map +1 -0
  143. package/dist/cli/index.d.ts +33 -0
  144. package/dist/cli/index.d.ts.map +1 -0
  145. package/dist/cli/index.js +38 -0
  146. package/dist/cli/index.js.map +1 -0
  147. package/dist/cli/parser.d.ts +45 -0
  148. package/dist/cli/parser.d.ts.map +1 -0
  149. package/dist/cli/parser.js +256 -0
  150. package/dist/cli/parser.js.map +1 -0
  151. package/dist/cli/plugin-loader.d.ts +39 -0
  152. package/dist/cli/plugin-loader.d.ts.map +1 -0
  153. package/dist/cli/plugin-loader.js +165 -0
  154. package/dist/cli/plugin-loader.js.map +1 -0
  155. package/dist/cli/plugin-registry.d.ts +50 -0
  156. package/dist/cli/plugin-registry.d.ts.map +1 -0
  157. package/dist/cli/plugin-registry.js +206 -0
  158. package/dist/cli/plugin-registry.js.map +1 -0
  159. package/dist/cli/plugin-types.d.ts +106 -0
  160. package/dist/cli/plugin-types.d.ts.map +1 -0
  161. package/dist/cli/plugin-types.js +103 -0
  162. package/dist/cli/plugin-types.js.map +1 -0
  163. package/dist/cli/runner.d.ts +35 -0
  164. package/dist/cli/runner.d.ts.map +1 -0
  165. package/dist/cli/runner.js +340 -0
  166. package/dist/cli/runner.js.map +1 -0
  167. package/dist/cli/suggest.d.ts +15 -0
  168. package/dist/cli/suggest.d.ts.map +1 -0
  169. package/dist/cli/suggest.js +49 -0
  170. package/dist/cli/suggest.js.map +1 -0
  171. package/dist/cli/types.d.ts +138 -0
  172. package/dist/cli/types.d.ts.map +1 -0
  173. package/dist/cli/types.js +63 -0
  174. package/dist/cli/types.js.map +1 -0
  175. package/dist/config/config.d.ts +86 -0
  176. package/dist/config/config.d.ts.map +1 -0
  177. package/dist/config/config.js +348 -0
  178. package/dist/config/config.js.map +1 -0
  179. package/dist/config/defaults.d.ts +66 -0
  180. package/dist/config/defaults.d.ts.map +1 -0
  181. package/dist/config/defaults.js +114 -0
  182. package/dist/config/defaults.js.map +1 -0
  183. package/dist/config/duration.d.ts +75 -0
  184. package/dist/config/duration.d.ts.map +1 -0
  185. package/dist/config/duration.js +190 -0
  186. package/dist/config/duration.js.map +1 -0
  187. package/dist/config/env.d.ts +67 -0
  188. package/dist/config/env.d.ts.map +1 -0
  189. package/dist/config/env.js +207 -0
  190. package/dist/config/env.js.map +1 -0
  191. package/dist/config/file.d.ts +97 -0
  192. package/dist/config/file.d.ts.map +1 -0
  193. package/dist/config/file.js +365 -0
  194. package/dist/config/file.js.map +1 -0
  195. package/dist/config/index.d.ts +35 -0
  196. package/dist/config/index.d.ts.map +1 -0
  197. package/dist/config/index.js +41 -0
  198. package/dist/config/index.js.map +1 -0
  199. package/dist/config/merge.d.ts +53 -0
  200. package/dist/config/merge.d.ts.map +1 -0
  201. package/dist/config/merge.js +226 -0
  202. package/dist/config/merge.js.map +1 -0
  203. package/dist/config/types.d.ts +257 -0
  204. package/dist/config/types.d.ts.map +1 -0
  205. package/dist/config/types.js +72 -0
  206. package/dist/config/types.js.map +1 -0
  207. package/dist/config/validation.d.ts +55 -0
  208. package/dist/config/validation.d.ts.map +1 -0
  209. package/dist/config/validation.js +251 -0
  210. package/dist/config/validation.js.map +1 -0
  211. package/dist/http/index.d.ts +8 -0
  212. package/dist/http/index.d.ts.map +1 -0
  213. package/dist/http/index.js +12 -0
  214. package/dist/http/index.js.map +1 -0
  215. package/dist/http/sync-handlers.d.ts +162 -0
  216. package/dist/http/sync-handlers.d.ts.map +1 -0
  217. package/dist/http/sync-handlers.js +271 -0
  218. package/dist/http/sync-handlers.js.map +1 -0
  219. package/dist/index.d.ts +25 -0
  220. package/dist/index.d.ts.map +1 -0
  221. package/dist/index.js +69 -0
  222. package/dist/index.js.map +1 -0
  223. package/dist/server/index.d.ts +34 -0
  224. package/dist/server/index.d.ts.map +1 -0
  225. package/dist/server/index.js +3329 -0
  226. package/dist/server/index.js.map +1 -0
  227. package/dist/server/static.d.ts +18 -0
  228. package/dist/server/static.d.ts.map +1 -0
  229. package/dist/server/static.js +71 -0
  230. package/dist/server/static.js.map +1 -0
  231. package/dist/server/ws/broadcaster.d.ts +8 -0
  232. package/dist/server/ws/broadcaster.d.ts.map +1 -0
  233. package/dist/server/ws/broadcaster.js +7 -0
  234. package/dist/server/ws/broadcaster.js.map +1 -0
  235. package/dist/server/ws/handler.d.ts +55 -0
  236. package/dist/server/ws/handler.d.ts.map +1 -0
  237. package/dist/server/ws/handler.js +160 -0
  238. package/dist/server/ws/handler.js.map +1 -0
  239. package/dist/services/blocked-cache.d.ts +297 -0
  240. package/dist/services/blocked-cache.d.ts.map +1 -0
  241. package/dist/services/blocked-cache.js +755 -0
  242. package/dist/services/blocked-cache.js.map +1 -0
  243. package/dist/services/dependency.d.ts +205 -0
  244. package/dist/services/dependency.d.ts.map +1 -0
  245. package/dist/services/dependency.js +566 -0
  246. package/dist/services/dependency.js.map +1 -0
  247. package/dist/services/embeddings/fusion.d.ts +33 -0
  248. package/dist/services/embeddings/fusion.d.ts.map +1 -0
  249. package/dist/services/embeddings/fusion.js +34 -0
  250. package/dist/services/embeddings/fusion.js.map +1 -0
  251. package/dist/services/embeddings/index.d.ts +12 -0
  252. package/dist/services/embeddings/index.d.ts.map +1 -0
  253. package/dist/services/embeddings/index.js +10 -0
  254. package/dist/services/embeddings/index.js.map +1 -0
  255. package/dist/services/embeddings/local-provider.d.ts +31 -0
  256. package/dist/services/embeddings/local-provider.d.ts.map +1 -0
  257. package/dist/services/embeddings/local-provider.js +80 -0
  258. package/dist/services/embeddings/local-provider.js.map +1 -0
  259. package/dist/services/embeddings/service.d.ts +76 -0
  260. package/dist/services/embeddings/service.d.ts.map +1 -0
  261. package/dist/services/embeddings/service.js +153 -0
  262. package/dist/services/embeddings/service.js.map +1 -0
  263. package/dist/services/embeddings/types.d.ts +70 -0
  264. package/dist/services/embeddings/types.d.ts.map +1 -0
  265. package/dist/services/embeddings/types.js +8 -0
  266. package/dist/services/embeddings/types.js.map +1 -0
  267. package/dist/services/id-length-cache.d.ts +156 -0
  268. package/dist/services/id-length-cache.d.ts.map +1 -0
  269. package/dist/services/id-length-cache.js +197 -0
  270. package/dist/services/id-length-cache.js.map +1 -0
  271. package/dist/services/inbox.d.ts +147 -0
  272. package/dist/services/inbox.d.ts.map +1 -0
  273. package/dist/services/inbox.js +428 -0
  274. package/dist/services/inbox.js.map +1 -0
  275. package/dist/services/index.d.ts +10 -0
  276. package/dist/services/index.d.ts.map +1 -0
  277. package/dist/services/index.js +10 -0
  278. package/dist/services/index.js.map +1 -0
  279. package/dist/services/priority-service.d.ts +145 -0
  280. package/dist/services/priority-service.d.ts.map +1 -0
  281. package/dist/services/priority-service.js +272 -0
  282. package/dist/services/priority-service.js.map +1 -0
  283. package/dist/services/search-utils.d.ts +47 -0
  284. package/dist/services/search-utils.d.ts.map +1 -0
  285. package/dist/services/search-utils.js +83 -0
  286. package/dist/services/search-utils.js.map +1 -0
  287. package/dist/sync/hash.d.ts +48 -0
  288. package/dist/sync/hash.d.ts.map +1 -0
  289. package/dist/sync/hash.js +136 -0
  290. package/dist/sync/hash.js.map +1 -0
  291. package/dist/sync/index.d.ts +11 -0
  292. package/dist/sync/index.d.ts.map +1 -0
  293. package/dist/sync/index.js +16 -0
  294. package/dist/sync/index.js.map +1 -0
  295. package/dist/sync/merge.d.ts +80 -0
  296. package/dist/sync/merge.d.ts.map +1 -0
  297. package/dist/sync/merge.js +310 -0
  298. package/dist/sync/merge.js.map +1 -0
  299. package/dist/sync/serialization.d.ts +132 -0
  300. package/dist/sync/serialization.d.ts.map +1 -0
  301. package/dist/sync/serialization.js +306 -0
  302. package/dist/sync/serialization.js.map +1 -0
  303. package/dist/sync/service.d.ts +102 -0
  304. package/dist/sync/service.d.ts.map +1 -0
  305. package/dist/sync/service.js +493 -0
  306. package/dist/sync/service.js.map +1 -0
  307. package/dist/sync/types.d.ts +275 -0
  308. package/dist/sync/types.d.ts.map +1 -0
  309. package/dist/sync/types.js +76 -0
  310. package/dist/sync/types.js.map +1 -0
  311. package/dist/systems/identity.d.ts +479 -0
  312. package/dist/systems/identity.d.ts.map +1 -0
  313. package/dist/systems/identity.js +817 -0
  314. package/dist/systems/identity.js.map +1 -0
  315. package/dist/systems/index.d.ts +8 -0
  316. package/dist/systems/index.d.ts.map +1 -0
  317. package/dist/systems/index.js +29 -0
  318. package/dist/systems/index.js.map +1 -0
  319. package/package.json +121 -0
  320. package/web/assets/charts-vendor-D1YcbGux.js +55 -0
  321. package/web/assets/dnd-vendor-DmxE-_ZH.js +5 -0
  322. package/web/assets/editor-vendor-BxraAWts.js +279 -0
  323. package/web/assets/index-B77vv208.js +341 -0
  324. package/web/assets/index-CF_XnVLh.css +1 -0
  325. package/web/assets/router-vendor-BCKpRBrB.js +41 -0
  326. package/web/assets/ui-vendor-DUahGnbT.js +45 -0
  327. package/web/assets/utils-vendor-CfYKiENT.js +813 -0
  328. package/web/favicon.ico +0 -0
  329. package/web/index.html +23 -0
  330. package/web/logo.png +0 -0
@@ -0,0 +1,522 @@
1
+ /**
2
+ * Entity Commands - Entity registration and listing
3
+ *
4
+ * Provides CLI commands for entity operations:
5
+ * - entity register: Register a new entity (agent, human, or system)
6
+ * - entity list: List all registered entities
7
+ */
8
+ import { success, failure, ExitCode } from '../types.js';
9
+ import { getOutputMode } from '../formatter.js';
10
+ import { createEntity, EntityTypeValue } from '@stoneforge/core';
11
+ import { getFormatter } from '../formatter.js';
12
+ import { ValidationError, ConflictError } from '@stoneforge/core';
13
+ import { getValue, loadConfig } from '../../config/index.js';
14
+ import { isValidPublicKey } from '../../systems/identity.js';
15
+ import { createAPI as createSharedAPI } from '../db.js';
16
+ /**
17
+ * Get the current actor from options or config
18
+ */
19
+ function getActor(options) {
20
+ if (options.actor) {
21
+ return options.actor;
22
+ }
23
+ loadConfig();
24
+ return getValue('actor') || 'anonymous';
25
+ }
26
+ async function entityRegisterHandler(args, options) {
27
+ if (args.length === 0) {
28
+ return failure('Usage: sf entity register <name> [--type <type>]\nExample: sf entity register claude --type agent', ExitCode.INVALID_ARGUMENTS);
29
+ }
30
+ const name = args[0];
31
+ const entityType = (options.type || 'agent');
32
+ // Validate entity type
33
+ const validTypes = Object.values(EntityTypeValue);
34
+ if (!validTypes.includes(entityType)) {
35
+ return failure(`Invalid entity type: ${entityType}. Must be one of: ${validTypes.join(', ')}`, ExitCode.VALIDATION);
36
+ }
37
+ try {
38
+ const { api, error: dbError } = createSharedAPI(options, true);
39
+ if (dbError) {
40
+ return failure(dbError, ExitCode.NOT_FOUND);
41
+ }
42
+ const actor = getActor(options);
43
+ const tags = options.tag || [];
44
+ const publicKey = options['public-key'];
45
+ // Validate public key format if provided
46
+ if (publicKey !== undefined) {
47
+ if (!isValidPublicKey(publicKey)) {
48
+ return failure('Invalid public key format. Expected base64-encoded Ed25519 public key (44 characters ending with =)', ExitCode.VALIDATION);
49
+ }
50
+ }
51
+ const input = {
52
+ name,
53
+ entityType,
54
+ createdBy: actor,
55
+ ...(publicKey && { publicKey }),
56
+ ...(tags.length > 0 && { tags }),
57
+ };
58
+ // Create the entity
59
+ const entity = await createEntity(input);
60
+ // Persist to database
61
+ const created = await api.create(entity);
62
+ const mode = getOutputMode(options);
63
+ if (mode === 'json') {
64
+ return success(created);
65
+ }
66
+ if (mode === 'quiet') {
67
+ return success(created.id);
68
+ }
69
+ return success(created, `Registered ${entityType} entity: ${name} (${created.id})`);
70
+ }
71
+ catch (err) {
72
+ if (err instanceof ValidationError) {
73
+ return failure(`Validation error: ${err.message}`, ExitCode.VALIDATION);
74
+ }
75
+ if (err instanceof ConflictError) {
76
+ return failure(`Entity already exists: ${err.message}`, ExitCode.VALIDATION);
77
+ }
78
+ const message = err instanceof Error ? err.message : String(err);
79
+ return failure(`Failed to register entity: ${message}`, ExitCode.GENERAL_ERROR);
80
+ }
81
+ }
82
+ const registerOptions = [
83
+ {
84
+ name: 'type',
85
+ short: 't',
86
+ description: 'Entity type: agent, human, or system (default: agent)',
87
+ hasValue: true,
88
+ },
89
+ {
90
+ name: 'public-key',
91
+ description: 'Base64-encoded Ed25519 public key for cryptographic identity',
92
+ hasValue: true,
93
+ },
94
+ {
95
+ name: 'tag',
96
+ description: 'Tag to add to entity (can be repeated)',
97
+ hasValue: true,
98
+ array: true,
99
+ },
100
+ ];
101
+ async function entityListHandler(_args, options) {
102
+ try {
103
+ const { api, error: dbError } = createSharedAPI(options, true);
104
+ if (dbError) {
105
+ return failure(dbError, ExitCode.NOT_FOUND);
106
+ }
107
+ // Build filter
108
+ const filter = {
109
+ type: 'entity',
110
+ };
111
+ if (options.limit) {
112
+ filter.limit = options.limit;
113
+ }
114
+ // Get entities
115
+ const entities = await api.list(filter);
116
+ // Filter by entity type if specified
117
+ let filteredEntities = entities;
118
+ if (options.type) {
119
+ filteredEntities = entities.filter((e) => e.entityType === options.type);
120
+ }
121
+ const mode = getOutputMode(options);
122
+ if (mode === 'json') {
123
+ return success(filteredEntities);
124
+ }
125
+ if (mode === 'quiet') {
126
+ return success(filteredEntities.map((e) => e.id).join('\n'));
127
+ }
128
+ if (filteredEntities.length === 0) {
129
+ return success(filteredEntities, 'No entities found.');
130
+ }
131
+ // Human-readable output
132
+ const lines = [];
133
+ lines.push('Entities:');
134
+ lines.push('');
135
+ for (const entity of filteredEntities) {
136
+ const typeIcon = getEntityTypeIcon(entity.entityType);
137
+ const keyIndicator = entity.publicKey ? ' 🔑' : '';
138
+ lines.push(`${typeIcon} ${entity.name} (${entity.id})${keyIndicator}`);
139
+ lines.push(` Type: ${entity.entityType}`);
140
+ if (entity.tags.length > 0) {
141
+ lines.push(` Tags: ${entity.tags.join(', ')}`);
142
+ }
143
+ }
144
+ lines.push('');
145
+ lines.push(`Total: ${filteredEntities.length} entities`);
146
+ return success(filteredEntities, lines.join('\n'));
147
+ }
148
+ catch (err) {
149
+ const message = err instanceof Error ? err.message : String(err);
150
+ return failure(`Failed to list entities: ${message}`, ExitCode.GENERAL_ERROR);
151
+ }
152
+ }
153
+ function getEntityTypeIcon(entityType) {
154
+ switch (entityType) {
155
+ case EntityTypeValue.AGENT:
156
+ return '[A]';
157
+ case EntityTypeValue.HUMAN:
158
+ return '[H]';
159
+ case EntityTypeValue.SYSTEM:
160
+ return '[S]';
161
+ default:
162
+ return '[?]';
163
+ }
164
+ }
165
+ const listOptions = [
166
+ {
167
+ name: 'type',
168
+ short: 't',
169
+ description: 'Filter by entity type: agent, human, or system',
170
+ hasValue: true,
171
+ },
172
+ {
173
+ name: 'limit',
174
+ short: 'l',
175
+ description: 'Maximum number of entities to return',
176
+ hasValue: true,
177
+ },
178
+ ];
179
+ // ============================================================================
180
+ // Entity Lookup Helper
181
+ // ============================================================================
182
+ /**
183
+ * Resolves an entity by ID or name.
184
+ * If the value starts with 'el-', it's treated as an ID.
185
+ * Otherwise, it's looked up by name.
186
+ */
187
+ async function resolveEntity(api, idOrName) {
188
+ if (idOrName.startsWith('el-')) {
189
+ // Treat as ID
190
+ return api.get(idOrName);
191
+ }
192
+ // Look up by name
193
+ const entity = await api.lookupEntityByName(idOrName);
194
+ return entity;
195
+ }
196
+ // ============================================================================
197
+ // Set Manager Command
198
+ // ============================================================================
199
+ async function setManagerHandler(args, options) {
200
+ if (args.length < 2) {
201
+ return failure('Usage: sf entity set-manager <entity> <manager>\nExample: sf entity set-manager alice bob', ExitCode.INVALID_ARGUMENTS);
202
+ }
203
+ const [entityArg, managerArg] = args;
204
+ try {
205
+ const { api, error: dbError } = createSharedAPI(options, true);
206
+ if (dbError) {
207
+ return failure(dbError, ExitCode.NOT_FOUND);
208
+ }
209
+ // Resolve entity
210
+ const entity = await resolveEntity(api, entityArg);
211
+ if (!entity) {
212
+ return failure(`Entity not found: ${entityArg}`, ExitCode.NOT_FOUND);
213
+ }
214
+ // Resolve manager
215
+ const manager = await resolveEntity(api, managerArg);
216
+ if (!manager) {
217
+ return failure(`Manager entity not found: ${managerArg}`, ExitCode.NOT_FOUND);
218
+ }
219
+ const actor = getActor(options);
220
+ // Set the manager
221
+ const updated = await api.setEntityManager(entity.id, manager.id, actor);
222
+ const mode = getOutputMode(options);
223
+ if (mode === 'json') {
224
+ return success(updated);
225
+ }
226
+ if (mode === 'quiet') {
227
+ return success(updated.id);
228
+ }
229
+ return success(updated, `Set ${entity.name}'s manager to ${manager.name}`);
230
+ }
231
+ catch (err) {
232
+ if (err instanceof ValidationError) {
233
+ return failure(`Validation error: ${err.message}`, ExitCode.VALIDATION);
234
+ }
235
+ if (err instanceof ConflictError) {
236
+ return failure(`Conflict: ${err.message}`, ExitCode.VALIDATION);
237
+ }
238
+ const message = err instanceof Error ? err.message : String(err);
239
+ return failure(`Failed to set manager: ${message}`, ExitCode.GENERAL_ERROR);
240
+ }
241
+ }
242
+ export const setManagerCommand = {
243
+ name: 'set-manager',
244
+ description: 'Set an entity\'s manager',
245
+ usage: 'sf entity set-manager <entity> <manager>',
246
+ help: `Set the manager for an entity.
247
+
248
+ Arguments:
249
+ entity Entity ID or name to update
250
+ manager Manager entity ID or name
251
+
252
+ The entity will report to the specified manager.
253
+ Validates that:
254
+ - Both entities exist
255
+ - No self-reference
256
+ - No circular management chains
257
+
258
+ Examples:
259
+ sf entity set-manager alice bob
260
+ sf entity set-manager el-abc123 el-def456`,
261
+ options: [],
262
+ handler: setManagerHandler,
263
+ };
264
+ // ============================================================================
265
+ // Clear Manager Command
266
+ // ============================================================================
267
+ async function clearManagerHandler(args, options) {
268
+ if (args.length < 1) {
269
+ return failure('Usage: sf entity clear-manager <entity>\nExample: sf entity clear-manager alice', ExitCode.INVALID_ARGUMENTS);
270
+ }
271
+ const [entityArg] = args;
272
+ try {
273
+ const { api, error: dbError } = createSharedAPI(options, true);
274
+ if (dbError) {
275
+ return failure(dbError, ExitCode.NOT_FOUND);
276
+ }
277
+ // Resolve entity
278
+ const entity = await resolveEntity(api, entityArg);
279
+ if (!entity) {
280
+ return failure(`Entity not found: ${entityArg}`, ExitCode.NOT_FOUND);
281
+ }
282
+ const actor = getActor(options);
283
+ // Clear the manager
284
+ const updated = await api.clearEntityManager(entity.id, actor);
285
+ const mode = getOutputMode(options);
286
+ if (mode === 'json') {
287
+ return success(updated);
288
+ }
289
+ if (mode === 'quiet') {
290
+ return success(updated.id);
291
+ }
292
+ return success(updated, `Cleared manager for ${entity.name}`);
293
+ }
294
+ catch (err) {
295
+ const message = err instanceof Error ? err.message : String(err);
296
+ return failure(`Failed to clear manager: ${message}`, ExitCode.GENERAL_ERROR);
297
+ }
298
+ }
299
+ export const clearManagerCommand = {
300
+ name: 'clear-manager',
301
+ description: 'Clear an entity\'s manager',
302
+ usage: 'sf entity clear-manager <entity>',
303
+ help: `Clear the manager for an entity.
304
+
305
+ Arguments:
306
+ entity Entity ID or name to update
307
+
308
+ Removes the reporting relationship for the entity.
309
+
310
+ Examples:
311
+ sf entity clear-manager alice
312
+ sf entity clear-manager el-abc123`,
313
+ options: [],
314
+ handler: clearManagerHandler,
315
+ };
316
+ // ============================================================================
317
+ // Reports Command (Direct Reports)
318
+ // ============================================================================
319
+ async function reportsHandler(args, options) {
320
+ if (args.length < 1) {
321
+ return failure('Usage: sf entity reports <manager>\nExample: sf entity reports bob', ExitCode.INVALID_ARGUMENTS);
322
+ }
323
+ const [managerArg] = args;
324
+ try {
325
+ const { api, error: dbError } = createSharedAPI(options, true);
326
+ if (dbError) {
327
+ return failure(dbError, ExitCode.NOT_FOUND);
328
+ }
329
+ // Resolve manager
330
+ const manager = await resolveEntity(api, managerArg);
331
+ if (!manager) {
332
+ return failure(`Manager entity not found: ${managerArg}`, ExitCode.NOT_FOUND);
333
+ }
334
+ // Get direct reports
335
+ const reports = await api.getDirectReports(manager.id);
336
+ const mode = getOutputMode(options);
337
+ const formatter = getFormatter(mode);
338
+ if (mode === 'json') {
339
+ return success(reports);
340
+ }
341
+ if (mode === 'quiet') {
342
+ return success(reports.map((e) => e.id).join('\n'));
343
+ }
344
+ if (reports.length === 0) {
345
+ return success(reports, `No direct reports for ${manager.name}`);
346
+ }
347
+ // Human-readable table output
348
+ const headers = ['ID', 'NAME', 'TYPE'];
349
+ const rows = reports.map((entity) => {
350
+ const e = entity;
351
+ return [e.id, e.name, e.entityType];
352
+ });
353
+ const table = formatter.table(headers, rows);
354
+ const summary = `\n${reports.length} direct report(s) for ${manager.name}`;
355
+ return success(reports, table + summary);
356
+ }
357
+ catch (err) {
358
+ const message = err instanceof Error ? err.message : String(err);
359
+ return failure(`Failed to get direct reports: ${message}`, ExitCode.GENERAL_ERROR);
360
+ }
361
+ }
362
+ export const reportsCommand = {
363
+ name: 'reports',
364
+ description: 'List direct reports for a manager',
365
+ usage: 'sf entity reports <manager>',
366
+ help: `List entities that report directly to a manager.
367
+
368
+ Arguments:
369
+ manager Manager entity ID or name
370
+
371
+ Examples:
372
+ sf entity reports bob
373
+ sf entity reports el-abc123
374
+ sf entity reports bob --json`,
375
+ options: [],
376
+ handler: reportsHandler,
377
+ };
378
+ // ============================================================================
379
+ // Chain Command (Management Chain)
380
+ // ============================================================================
381
+ async function chainHandler(args, options) {
382
+ if (args.length < 1) {
383
+ return failure('Usage: sf entity chain <entity>\nExample: sf entity chain alice', ExitCode.INVALID_ARGUMENTS);
384
+ }
385
+ const [entityArg] = args;
386
+ try {
387
+ const { api, error: dbError } = createSharedAPI(options, true);
388
+ if (dbError) {
389
+ return failure(dbError, ExitCode.NOT_FOUND);
390
+ }
391
+ // Resolve entity
392
+ const entity = await resolveEntity(api, entityArg);
393
+ if (!entity) {
394
+ return failure(`Entity not found: ${entityArg}`, ExitCode.NOT_FOUND);
395
+ }
396
+ // Get management chain
397
+ const chain = await api.getManagementChain(entity.id);
398
+ const mode = getOutputMode(options);
399
+ if (mode === 'json') {
400
+ return success(chain);
401
+ }
402
+ if (mode === 'quiet') {
403
+ return success(chain.map((e) => e.id).join('\n'));
404
+ }
405
+ if (chain.length === 0) {
406
+ return success(chain, `${entity.name} has no manager`);
407
+ }
408
+ // Human-readable visual chain
409
+ const names = [entity.name, ...chain.map((e) => e.name)];
410
+ const chainDisplay = names.join(' -> ');
411
+ return success(chain, `Management chain: ${chainDisplay}`);
412
+ }
413
+ catch (err) {
414
+ const message = err instanceof Error ? err.message : String(err);
415
+ return failure(`Failed to get management chain: ${message}`, ExitCode.GENERAL_ERROR);
416
+ }
417
+ }
418
+ export const chainCommand = {
419
+ name: 'chain',
420
+ description: 'Show management chain for an entity',
421
+ usage: 'sf entity chain <entity>',
422
+ help: `Show the management chain for an entity.
423
+
424
+ Arguments:
425
+ entity Entity ID or name
426
+
427
+ Displays the chain from the entity up to the root (CEO/top-level).
428
+ Output format: entity -> manager -> manager's manager -> ... -> root
429
+
430
+ Examples:
431
+ sf entity chain alice
432
+ sf entity chain el-abc123
433
+ sf entity chain alice --json`,
434
+ options: [],
435
+ handler: chainHandler,
436
+ };
437
+ // ============================================================================
438
+ // Command Definitions
439
+ // ============================================================================
440
+ export const entityRegisterCommand = {
441
+ name: 'register',
442
+ description: 'Register a new entity',
443
+ usage: 'sf entity register <name> [--type <type>]',
444
+ help: `Register a new entity in the system.
445
+
446
+ Entities represent identities - AI agents, humans, or system processes.
447
+ They are the actors that create and interact with elements.
448
+
449
+ Options:
450
+ --type, -t Entity type: agent, human, or system (default: agent)
451
+ --public-key Base64-encoded Ed25519 public key for cryptographic identity
452
+ --tag Tag to add to entity (can be repeated)
453
+
454
+ Examples:
455
+ sf entity register claude --type agent
456
+ sf entity register bob --type human
457
+ sf entity register ci-system --type system
458
+ sf entity register alice --tag team-alpha --tag frontend`,
459
+ options: registerOptions,
460
+ handler: entityRegisterHandler,
461
+ };
462
+ export const entityListCommand = {
463
+ name: 'list',
464
+ description: 'List all registered entities',
465
+ usage: 'sf entity list [--type <type>]',
466
+ help: `List all registered entities.
467
+
468
+ Options:
469
+ --type, -t Filter by entity type: agent, human, or system
470
+ --limit, -n Maximum number of entities to return
471
+
472
+ Examples:
473
+ sf entity list
474
+ sf entity list --type agent
475
+ sf entity list --type human --limit 10
476
+ sf entity list --json`,
477
+ options: listOptions,
478
+ handler: entityListHandler,
479
+ };
480
+ export const entityCommand = {
481
+ name: 'entity',
482
+ description: 'Manage entities (agents, humans, systems)',
483
+ usage: 'sf entity <subcommand>',
484
+ help: `Manage entities in the system.
485
+
486
+ Entities represent identities - AI agents, humans, or system processes.
487
+ They are used for attribution, assignment, and access control.
488
+
489
+ Subcommands:
490
+ register Register a new entity
491
+ list List all registered entities
492
+ set-manager Set an entity's manager
493
+ clear-manager Clear an entity's manager
494
+ reports List direct reports for a manager
495
+ chain Show management chain for an entity
496
+
497
+ Examples:
498
+ sf entity register claude --type agent
499
+ sf entity list
500
+ sf entity list --type human
501
+ sf entity set-manager alice bob
502
+ sf entity reports bob
503
+ sf entity chain alice
504
+
505
+ Note: Use 'sf show <id>', 'sf update <id>', 'sf delete <id>' for any element.`,
506
+ handler: async (args, options) => {
507
+ // Default to list if no subcommand
508
+ return entityListHandler(args, options);
509
+ },
510
+ subcommands: {
511
+ register: entityRegisterCommand,
512
+ list: entityListCommand,
513
+ 'set-manager': setManagerCommand,
514
+ 'clear-manager': clearManagerCommand,
515
+ reports: reportsCommand,
516
+ chain: chainCommand,
517
+ // Aliases (hidden from --help via dedup in getCommandHelp)
518
+ ls: entityListCommand,
519
+ create: entityRegisterCommand,
520
+ },
521
+ };
522
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/cli/commands/entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Garbage Collection Commands - Clean up ephemeral data
3
+ *
4
+ * Provides commands for:
5
+ * - gc tasks: Garbage collect old ephemeral tasks
6
+ * - gc workflows: Garbage collect old ephemeral workflows
7
+ */
8
+ import type { Command } from '../types.js';
9
+ export declare const gcCommand: Command;
10
+ //# sourceMappingURL=gc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAA+C,MAAM,aAAa,CAAC;AAoRxF,eAAO,MAAM,SAAS,EAAE,OA0CvB,CAAC"}