@moltzap/client 2026.811.0 → 2026.812.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 (190) hide show
  1. package/dist/channel-base/index.d.ts +4 -4
  2. package/dist/channel-base/index.d.ts.map +1 -1
  3. package/dist/channel-base/index.js +6 -3
  4. package/dist/channel-base/index.js.map +1 -1
  5. package/dist/channel-core-enrichment.d.ts +24 -0
  6. package/dist/channel-core-enrichment.d.ts.map +1 -1
  7. package/dist/channel-core-enrichment.js +94 -20
  8. package/dist/channel-core-enrichment.js.map +1 -1
  9. package/dist/channel-core.d.ts +3 -1
  10. package/dist/channel-core.d.ts.map +1 -1
  11. package/dist/channel-core.js +2 -0
  12. package/dist/channel-core.js.map +1 -1
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +7 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/config.test-utils.d.ts +6 -0
  18. package/dist/config.test-utils.d.ts.map +1 -1
  19. package/dist/config.test-utils.js +5 -1
  20. package/dist/config.test-utils.js.map +1 -1
  21. package/dist/harness/client-runtime.d.ts +12 -5
  22. package/dist/harness/client-runtime.d.ts.map +1 -1
  23. package/dist/harness/client-runtime.js +16 -2
  24. package/dist/harness/client-runtime.js.map +1 -1
  25. package/dist/harness/index.d.ts +2 -2
  26. package/dist/harness/index.d.ts.map +1 -1
  27. package/dist/harness/index.js +2 -2
  28. package/dist/harness/index.js.map +1 -1
  29. package/dist/harness/runtime.d.ts +152 -0
  30. package/dist/harness/runtime.d.ts.map +1 -1
  31. package/dist/harness/runtime.js +99 -2
  32. package/dist/harness/runtime.js.map +1 -1
  33. package/dist/harness-client.d.ts +17 -13
  34. package/dist/harness-client.d.ts.map +1 -1
  35. package/dist/harness-client.js +59 -4
  36. package/dist/harness-client.js.map +1 -1
  37. package/dist/harness-context-projection.d.ts +35 -0
  38. package/dist/harness-context-projection.d.ts.map +1 -0
  39. package/dist/harness-context-projection.js +123 -0
  40. package/dist/harness-context-projection.js.map +1 -0
  41. package/dist/harness-mcp-server.d.ts +1 -2
  42. package/dist/harness-mcp-server.d.ts.map +1 -1
  43. package/dist/harness-mcp-server.js +11 -17
  44. package/dist/harness-mcp-server.js.map +1 -1
  45. package/dist/harness-mcp-wire.d.ts +47 -15
  46. package/dist/harness-mcp-wire.d.ts.map +1 -1
  47. package/dist/harness-mcp-wire.js +93 -37
  48. package/dist/harness-mcp-wire.js.map +1 -1
  49. package/dist/index.d.ts +3 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/local-paths.d.ts +0 -11
  54. package/dist/local-paths.d.ts.map +1 -1
  55. package/dist/local-paths.js +0 -12
  56. package/dist/local-paths.js.map +1 -1
  57. package/dist/moltzapd-catalog.d.ts +35 -0
  58. package/dist/moltzapd-catalog.d.ts.map +1 -0
  59. package/dist/moltzapd-catalog.js +117 -0
  60. package/dist/moltzapd-catalog.js.map +1 -0
  61. package/dist/moltzapd-child-ipc.d.ts +26 -0
  62. package/dist/moltzapd-child-ipc.d.ts.map +1 -0
  63. package/dist/moltzapd-child-ipc.js +31 -0
  64. package/dist/moltzapd-child-ipc.js.map +1 -0
  65. package/dist/moltzapd-child.d.ts +55 -0
  66. package/dist/moltzapd-child.d.ts.map +1 -0
  67. package/dist/moltzapd-child.js +225 -0
  68. package/dist/moltzapd-child.js.map +1 -0
  69. package/dist/moltzapd-main.d.ts +3 -0
  70. package/dist/moltzapd-main.d.ts.map +1 -0
  71. package/dist/moltzapd-main.js +18 -0
  72. package/dist/moltzapd-main.js.map +1 -0
  73. package/dist/moltzapd-registration.d.ts +40 -0
  74. package/dist/moltzapd-registration.d.ts.map +1 -0
  75. package/dist/moltzapd-registration.js +59 -0
  76. package/dist/moltzapd-registration.js.map +1 -0
  77. package/dist/moltzapd.d.ts +56 -9
  78. package/dist/moltzapd.d.ts.map +1 -1
  79. package/dist/moltzapd.js +108 -36
  80. package/dist/moltzapd.js.map +1 -1
  81. package/dist/notification/trace.d.ts +10 -0
  82. package/dist/notification/trace.d.ts.map +1 -0
  83. package/dist/notification/trace.js +34 -0
  84. package/dist/notification/trace.js.map +1 -0
  85. package/dist/presentation/index.d.ts +3 -0
  86. package/dist/presentation/index.d.ts.map +1 -0
  87. package/dist/presentation/index.js +3 -0
  88. package/dist/presentation/index.js.map +1 -0
  89. package/dist/presentation/state.d.ts +77 -0
  90. package/dist/presentation/state.d.ts.map +1 -0
  91. package/dist/presentation/state.js +211 -0
  92. package/dist/presentation/state.js.map +1 -0
  93. package/dist/profile.d.ts +30 -28
  94. package/dist/profile.d.ts.map +1 -1
  95. package/dist/profile.js +28 -20
  96. package/dist/profile.js.map +1 -1
  97. package/dist/service.d.ts +8 -79
  98. package/dist/service.d.ts.map +1 -1
  99. package/dist/service.js +29 -333
  100. package/dist/service.js.map +1 -1
  101. package/dist/test-utils/fake-service.d.ts +3 -5
  102. package/dist/test-utils/fake-service.d.ts.map +1 -1
  103. package/dist/test-utils/fake-service.js +12 -12
  104. package/dist/test-utils/fake-service.js.map +1 -1
  105. package/dist/test-utils/index.d.ts +2 -0
  106. package/dist/test-utils/index.d.ts.map +1 -1
  107. package/dist/test-utils/index.js +2 -0
  108. package/dist/test-utils/index.js.map +1 -1
  109. package/dist/test-utils/process/reserve-port.d.ts +20 -0
  110. package/dist/test-utils/process/reserve-port.d.ts.map +1 -0
  111. package/dist/test-utils/process/reserve-port.js +41 -0
  112. package/dist/test-utils/process/reserve-port.js.map +1 -0
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +32 -6
  115. package/dist/cli/adapters.d.ts +0 -21
  116. package/dist/cli/adapters.d.ts.map +0 -1
  117. package/dist/cli/adapters.js +0 -111
  118. package/dist/cli/adapters.js.map +0 -1
  119. package/dist/cli/commands/agents.d.ts +0 -11
  120. package/dist/cli/commands/agents.d.ts.map +0 -1
  121. package/dist/cli/commands/agents.js +0 -27
  122. package/dist/cli/commands/agents.js.map +0 -1
  123. package/dist/cli/commands/conversations.d.ts +0 -18
  124. package/dist/cli/commands/conversations.d.ts.map +0 -1
  125. package/dist/cli/commands/conversations.js +0 -33
  126. package/dist/cli/commands/conversations.js.map +0 -1
  127. package/dist/cli/commands/messages.d.ts +0 -41
  128. package/dist/cli/commands/messages.d.ts.map +0 -1
  129. package/dist/cli/commands/messages.js +0 -39
  130. package/dist/cli/commands/messages.js.map +0 -1
  131. package/dist/cli/commands/register.d.ts +0 -46
  132. package/dist/cli/commands/register.d.ts.map +0 -1
  133. package/dist/cli/commands/register.js +0 -103
  134. package/dist/cli/commands/register.js.map +0 -1
  135. package/dist/cli/commands/send.d.ts +0 -53
  136. package/dist/cli/commands/send.d.ts.map +0 -1
  137. package/dist/cli/commands/send.js +0 -57
  138. package/dist/cli/commands/send.js.map +0 -1
  139. package/dist/cli/commands/start.d.ts +0 -34
  140. package/dist/cli/commands/start.d.ts.map +0 -1
  141. package/dist/cli/commands/start.js +0 -59
  142. package/dist/cli/commands/start.js.map +0 -1
  143. package/dist/cli/commands/status.d.ts +0 -7
  144. package/dist/cli/commands/status.d.ts.map +0 -1
  145. package/dist/cli/commands/status.js +0 -16
  146. package/dist/cli/commands/status.js.map +0 -1
  147. package/dist/cli/commands/test-transport.d.ts +0 -28
  148. package/dist/cli/commands/test-transport.d.ts.map +0 -1
  149. package/dist/cli/commands/test-transport.js +0 -40
  150. package/dist/cli/commands/test-transport.js.map +0 -1
  151. package/dist/cli/index.d.ts +0 -3
  152. package/dist/cli/index.d.ts.map +0 -1
  153. package/dist/cli/index.js +0 -105
  154. package/dist/cli/index.js.map +0 -1
  155. package/dist/cli/output.d.ts +0 -14
  156. package/dist/cli/output.d.ts.map +0 -1
  157. package/dist/cli/output.js +0 -19
  158. package/dist/cli/output.js.map +0 -1
  159. package/dist/cli/socket-client.d.ts +0 -28
  160. package/dist/cli/socket-client.d.ts.map +0 -1
  161. package/dist/cli/socket-client.js +0 -63
  162. package/dist/cli/socket-client.js.map +0 -1
  163. package/dist/cli/transport.d.ts +0 -132
  164. package/dist/cli/transport.d.ts.map +0 -1
  165. package/dist/cli/transport.js +0 -127
  166. package/dist/cli/transport.js.map +0 -1
  167. package/dist/local-daemon-rpc.d.ts +0 -1170
  168. package/dist/local-daemon-rpc.d.ts.map +0 -1
  169. package/dist/local-daemon-rpc.js +0 -178
  170. package/dist/local-daemon-rpc.js.map +0 -1
  171. package/dist/local-history.d.ts +0 -75
  172. package/dist/local-history.d.ts.map +0 -1
  173. package/dist/local-history.js +0 -82
  174. package/dist/local-history.js.map +0 -1
  175. package/dist/local-socket-server.d.ts +0 -33
  176. package/dist/local-socket-server.d.ts.map +0 -1
  177. package/dist/local-socket-server.js +0 -100
  178. package/dist/local-socket-server.js.map +0 -1
  179. package/dist/refs.d.ts +0 -18
  180. package/dist/refs.d.ts.map +0 -1
  181. package/dist/refs.js +0 -18
  182. package/dist/refs.js.map +0 -1
  183. package/dist/service-helpers.d.ts +0 -55
  184. package/dist/service-helpers.d.ts.map +0 -1
  185. package/dist/service-helpers.js +0 -108
  186. package/dist/service-helpers.js.map +0 -1
  187. package/dist/service-local-daemon.d.ts +0 -32
  188. package/dist/service-local-daemon.d.ts.map +0 -1
  189. package/dist/service-local-daemon.js +0 -153
  190. package/dist/service-local-daemon.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltzap/client",
3
- "version": "2026.811.0",
3
+ "version": "2026.812.0",
4
4
  "description": "MoltZap client service — connection, conversation state, and cross-conversation context",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,7 +14,7 @@
14
14
  "main": "./dist/index.js",
15
15
  "types": "./dist/index.d.ts",
16
16
  "bin": {
17
- "moltzap": "./dist/cli/index.js"
17
+ "moltzapd": "./dist/moltzapd-main.js"
18
18
  },
19
19
  "exports": {
20
20
  ".": {
@@ -62,6 +62,33 @@
62
62
  "command": "eslint . --cache --max-warnings=0"
63
63
  }
64
64
  },
65
+ "test:integration": {
66
+ "executor": "nx:run-commands",
67
+ "dependsOn": [
68
+ "build",
69
+ "^build"
70
+ ],
71
+ "options": {
72
+ "cwd": "packages/client",
73
+ "command": "vitest run --config vitest.integration.config.mjs"
74
+ }
75
+ },
76
+ "test:pack": {
77
+ "executor": "nx:run-commands",
78
+ "dependsOn": [
79
+ "build",
80
+ "^build"
81
+ ],
82
+ "inputs": [
83
+ "production",
84
+ "^production",
85
+ "{workspaceRoot}/scripts/test-client-package.mjs"
86
+ ],
87
+ "cache": false,
88
+ "options": {
89
+ "command": "node scripts/test-client-package.mjs"
90
+ }
91
+ },
65
92
  "arch:check": {
66
93
  "executor": "nx:run-commands",
67
94
  "options": {
@@ -83,7 +110,7 @@
83
110
  "@modelcontextprotocol/node": "2.0.0-beta.5",
84
111
  "@modelcontextprotocol/server": "2.0.0-beta.5",
85
112
  "effect": "^3.22.0",
86
- "@moltzap/protocol": "2026.811.0"
113
+ "@moltzap/protocol": "2026.812.0"
87
114
  },
88
115
  "devDependencies": {
89
116
  "@effect/vitest": "^0.30.0",
@@ -93,15 +120,14 @@
93
120
  "tsx": "^4.19.0",
94
121
  "typescript": "npm:@typescript/typescript6@^6.0.2",
95
122
  "vitest": "^3.2.0",
96
- "@moltzap/server-core": "2026.811.0"
123
+ "@moltzap/server-core": "2026.812.0"
97
124
  },
98
125
  "scripts": {
99
126
  "build": "nx run @moltzap/client:build",
100
127
  "lint": "nx run @moltzap/client:lint",
101
128
  "test": "vitest run",
102
129
  "test:integration": "vitest run --config vitest.integration.config.mjs",
103
- "test:conformance": "vitest run -c vitest.conformance.config.mjs",
104
- "docs:generate": "nx run @moltzap/client:build && pnpm exec tsx scripts/generate-cli-docs.ts",
130
+ "docs:generate": "pnpm exec tsx scripts/generate-ws-connect-snippet.ts",
105
131
  "typecheck:tests": "tsc -p tsconfig.test.json"
106
132
  }
107
133
  }
@@ -1,21 +0,0 @@
1
- /**
2
- * Shared adapters between Effect schemas and the command-line interface.
3
- */
4
- import { Options } from "@effect/cli";
5
- import { Schema } from "effect";
6
- interface SchemaOptionPresentation {
7
- readonly name?: string;
8
- readonly description?: string;
9
- }
10
- type SchemaOptionPresentations<I> = Partial<Record<Extract<keyof I, string>, SchemaOptionPresentation>>;
11
- /**
12
- * Generates scalar named CLI options from a closed Effect Struct schema.
13
- * The assembled encoded object is decoded once through the complete schema,
14
- * keeping brands, transformations, refinements, and defaults authoritative.
15
- * @param schema Value supplied to the operation.
16
- * @param presentations Value supplied to the operation.
17
- * @returns The options from schema result.
18
- */
19
- export declare const optionsFromSchema: <A extends Readonly<Record<string, unknown>>, I extends Readonly<Record<string, unknown>>>(schema: Schema.Schema<A, I>, presentations?: SchemaOptionPresentations<I>) => Options.Options<A>;
20
- export {};
21
- //# sourceMappingURL=adapters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAU,MAAM,EAAa,MAAM,QAAQ,CAAC;AAEnD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,KAAK,yBAAyB,CAAC,CAAC,IAAI,OAAO,CACzC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,wBAAwB,CAAC,CAC3D,CAAC;AAqIF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC3C,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,UAEnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,kBACZ,yBAAyB,CAAC,CAAC,CAAC,KAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,CA2CnB,CAAC"}
@@ -1,111 +0,0 @@
1
- /**
2
- * Shared adapters between Effect schemas and the command-line interface.
3
- */
4
- import { Options } from "@effect/cli";
5
- import { Option, Schema, SchemaAST } from "effect";
6
- class UnsupportedCliSchemaError extends Error {
7
- constructor(field, astTag, reason) {
8
- super(`Cannot generate CLI option for "${field}" (${astTag}): ${reason}`);
9
- this.name = "UnsupportedCliSchemaError";
10
- }
11
- }
12
- const unsupported = (field, astTag, reason) => {
13
- throw new UnsupportedCliSchemaError(field, astTag, reason);
14
- };
15
- const kebabCase = (value) => value
16
- .replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)
17
- .replace(/^-/, "");
18
- const withoutUndefined = (ast) => {
19
- if (!SchemaAST.isUnion(ast)) {
20
- return ast;
21
- }
22
- const members = ast.types.filter((member) => !SchemaAST.isUndefinedKeyword(member));
23
- return SchemaAST.Union.make(members, ast.annotations);
24
- };
25
- const hasIntegerRefinement = (ast) => {
26
- if (SchemaAST.isRefinement(ast)) {
27
- return (Option.contains(SchemaAST.getSchemaIdAnnotation(ast), Schema.IntSchemaId) || hasIntegerRefinement(ast.from));
28
- }
29
- if (SchemaAST.isUnion(ast)) {
30
- return ast.types.some(hasIntegerRefinement);
31
- }
32
- if (SchemaAST.isTransformation(ast)) {
33
- return hasIntegerRefinement(ast.to);
34
- }
35
- return false;
36
- };
37
- const propertyName = (property) => typeof property.name === "string"
38
- ? property.name
39
- : unsupported(String(property.name), property.type._tag, "symbol property keys are not supported");
40
- const closedProperties = (ast, side) => {
41
- if (!SchemaAST.isTypeLiteral(ast) || ast.indexSignatures.length > 0) {
42
- return unsupported("<root>", ast._tag, `the top-level ${side} schema must be a closed Struct`);
43
- }
44
- return ast.propertySignatures;
45
- };
46
- const scalarOption = (field, name, encodedAst, validationAst) => {
47
- if (SchemaAST.isStringKeyword(encodedAst)) {
48
- return Options.text(name);
49
- }
50
- if (SchemaAST.isNumberKeyword(encodedAst)) {
51
- return hasIntegerRefinement(validationAst)
52
- ? Options.integer(name)
53
- : Options.float(name);
54
- }
55
- return unsupported(field, encodedAst._tag, "only encoded string and number scalar fields are supported");
56
- };
57
- const fragmentForProperty = (property, validationProperty, presentation, claimedNames) => {
58
- const field = propertyName(property);
59
- const name = presentation.name ?? kebabCase(field);
60
- if (claimedNames.has(name)) {
61
- return unsupported(field, "OptionNameCollision", `the option name "${name}" is already in use`);
62
- }
63
- claimedNames.add(name);
64
- const encodedAst = property.isOptional
65
- ? withoutUndefined(property.type)
66
- : property.type;
67
- const validationAst = validationProperty.isOptional
68
- ? withoutUndefined(validationProperty.type)
69
- : validationProperty.type;
70
- const primitive = scalarOption(field, name, encodedAst, validationAst);
71
- const presented = presentation.description === undefined
72
- ? primitive
73
- : primitive.pipe(Options.withDescription(presentation.description));
74
- if (!property.isOptional) {
75
- return presented.pipe(Options.map((value) => ({ [field]: value })));
76
- }
77
- return presented.pipe(Options.optional, Options.map(Option.match({
78
- onNone: () => ({}),
79
- onSome: (value) => ({ [field]: value }),
80
- })));
81
- };
82
- /**
83
- * Generates scalar named CLI options from a closed Effect Struct schema.
84
- * The assembled encoded object is decoded once through the complete schema,
85
- * keeping brands, transformations, refinements, and defaults authoritative.
86
- * @param schema Value supplied to the operation.
87
- * @param presentations Value supplied to the operation.
88
- * @returns The options from schema result.
89
- */
90
- export const optionsFromSchema = (schema, presentations = {}) => {
91
- const properties = closedProperties(Schema.encodedSchema(schema).ast, "encoded");
92
- if (properties.length === 0) {
93
- return unsupported("<root>", "TypeLiteral", "empty Structs do not define any CLI options");
94
- }
95
- const validationProperties = new Map(closedProperties(Schema.typeSchema(schema).ast, "type").map((property) => [
96
- propertyName(property),
97
- property,
98
- ]));
99
- const presentationByField = new Map(Object.entries(presentations));
100
- const claimedNames = new Set();
101
- const fragments = properties.map((property) => {
102
- const field = propertyName(property);
103
- const validationProperty = validationProperties.get(field);
104
- if (validationProperty === undefined) {
105
- return unsupported(field, "RenamedProperty", "encoded and type-side property names must match");
106
- }
107
- return fragmentForProperty(property, validationProperty, presentationByField.get(field) ?? {}, claimedNames);
108
- });
109
- return Options.all(fragments).pipe(Options.map((parts) => Object.assign({}, ...parts)), Options.withSchema(schema));
110
- };
111
- //# sourceMappingURL=adapters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/cli/adapters.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Command } from "@effect/cli";
2
- /**
3
- * `moltzap agents [list|lookup]` — default (no subcommand) lists all agents,
4
- * `lookup` resolves one or more names.
5
- */
6
- export declare const agentsCommand: Command.Command<"agents", import("../transport.js").Transport, never, {
7
- readonly subcommand: import("effect/Option").Option<{} | {
8
- readonly names: string[];
9
- }>;
10
- }>;
11
- //# sourceMappingURL=agents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAC;AA4C5C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;EAKzB,CAAC"}
@@ -1,27 +0,0 @@
1
- import { Args, Command } from "@effect/cli";
2
- import { Effect } from "effect";
3
- import { localDaemonCommands } from "../../local-daemon-rpc.js";
4
- import { command, runHandler } from "../transport.js";
5
- import { logJson, logLines } from "../output.js";
6
- // safer-arch-ignore folder-explicit-api-required: the CLI entrypoint deliberately composes private one-command-per-file leaves; this folder is not a reusable API.
7
- // safer-arch-ignore no-trivial-sink-file: this command is a private one-command-per-file leaf consistent with the CLI commands folder convention.
8
- const listAgents = Command.make("list", {}, () => runHandler(command(localDaemonCommands.agentsList, {}).pipe(Effect.flatMap(logJson), Effect.asVoid))).pipe(Command.withDescription("List agents (default)"));
9
- const namesArg = Args.text({ name: "name" }).pipe(Args.withDescription("Agent names to look up"), Args.repeated);
10
- const lookupAgents = Command.make("lookup", { names: namesArg }, ({ names }) => runHandler(command(localDaemonCommands.agentsSearch, { names }).pipe(Effect.flatMap((result) => {
11
- if (result.agents.length === 0) {
12
- return Effect.log("No agents found.");
13
- }
14
- return logLines(result.agents.map((agent) => {
15
- let line = `Agent: ${agent.name}\n ID: ${agent.id}\n Status: ${agent.status}`;
16
- if (agent.description) {
17
- line += `\n Description: ${agent.description}`;
18
- }
19
- return `${line}\n`;
20
- }));
21
- }), Effect.asVoid))).pipe(Command.withDescription("Look up agents by name"));
22
- /**
23
- * `moltzap agents [list|lookup]` — default (no subcommand) lists all agents,
24
- * `lookup` resolves one or more names.
25
- */
26
- export const agentsCommand = Command.make("agents", {}, () => listAgents.handler({})).pipe(Command.withDescription("List and look up agents on MoltZap"), Command.withSubcommands([listAgents, lookupAgents]));
27
- //# sourceMappingURL=agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/cli/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,mKAAmK;AACnK,kJAAkJ;AAClJ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAC/C,UAAU,CACR,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,CACd,CACF,CACF,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAEzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAC/C,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,EAC9C,IAAI,CAAC,QAAQ,CACd,CAAC;AAEF,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7E,UAAU,CACR,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;IACxB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,IAAI,IAAI,GAAG,UAAU,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,IAAI,oBAAoB,KAAK,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CACF,CACF,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3D,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CACvB,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CAAC,oCAAoC,CAAC,EAC7D,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CACpD,CAAC"}
@@ -1,18 +0,0 @@
1
- import { Command } from "@effect/cli";
2
- import { Option } from "effect";
3
- import { type ConversationId } from "@moltzap/protocol/conversation";
4
- /** Provides the conversations command runtime value. */
5
- export declare const conversationsCommand: Command.Command<"conversations", import("../transport.js").Transport, never, {
6
- readonly subcommand: Option.Option<{
7
- readonly conversationId: ConversationId;
8
- readonly limit: number;
9
- readonly sessionKey: Option.Option<string>;
10
- }>;
11
- }>;
12
- /** Top-level `moltzap history &lt;conversationId>` — identical to `conversations history`. */
13
- export declare const historyCommand: Command.Command<"history", import("../transport.js").Transport, never, {
14
- readonly conversationId: ConversationId;
15
- readonly limit: number;
16
- readonly sessionKey: Option.Option<string>;
17
- }>;
18
- //# sourceMappingURL=conversations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,aAAa,CAAC;AACrD,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,gCAAgC,CAAC;AAqDxC,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;;;;;EAQhC,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,cAAc;;;;EAQ+C,CAAC"}
@@ -1,33 +0,0 @@
1
- import { Args, Command, Options } from "@effect/cli";
2
- import { Effect, Option } from "effect";
3
- import { conversationId, } from "@moltzap/protocol/conversation";
4
- import { localDaemonCommands } from "../../local-daemon-rpc.js";
5
- import { command, runHandler } from "../transport.js";
6
- import { logJson, logLines } from "../output.js";
7
- const DEFAULT_HISTORY_LIMIT = 50;
8
- const historyLimitOption = Options.integer("limit").pipe(Options.withDefault(DEFAULT_HISTORY_LIMIT), Options.withDescription("Max messages to show"));
9
- const sessionKeyOption = Options.text("session-key").pipe(Options.withDescription("Session key for cross-conversation context"), Options.optional);
10
- const conversationIdArg = Args.text({ name: "conversationId" }).pipe(Args.withSchema(conversationId), Args.withDescription("Conversation ID"));
11
- const historyHandler = ({ conversationId, limit, sessionKey, }) => {
12
- const params = Option.isSome(sessionKey)
13
- ? { conversationId, limit, sessionKey: sessionKey.value }
14
- : { conversationId, limit };
15
- return runHandler(command(localDaemonCommands.history, params).pipe(Effect.flatMap(logJson), Effect.asVoid));
16
- };
17
- const historySubcommand = Command.make("history", {
18
- conversationId: conversationIdArg,
19
- limit: historyLimitOption,
20
- sessionKey: sessionKeyOption,
21
- }, historyHandler).pipe(Command.withDescription("Show message history for a conversation"));
22
- /** Provides the conversations command runtime value. */
23
- export const conversationsCommand = Command.make("conversations", {}, () => logLines([
24
- "moltzap conversations: only `history` is supported in this release.",
25
- "See `moltzap conversations history --help`.",
26
- ])).pipe(Command.withDescription("Show conversation history"), Command.withSubcommands([historySubcommand]));
27
- /** Top-level `moltzap history &lt;conversationId>` — identical to `conversations history`. */
28
- export const historyCommand = Command.make("history", {
29
- conversationId: conversationIdArg,
30
- limit: historyLimitOption,
31
- sessionKey: sessionKeyOption,
32
- }, historyHandler).pipe(Command.withDescription("Show message history for a conversation"));
33
- //# sourceMappingURL=conversations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../../src/cli/commands/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAEL,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtD,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAC1C,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAChD,CAAC;AAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CACvD,OAAO,CAAC,eAAe,CAAC,4CAA4C,CAAC,EACrE,OAAO,CAAC,QAAQ,CACjB,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAClE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAC/B,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,EACtB,cAAc,EACd,KAAK,EACL,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACtD,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE;QACzD,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC9B,OAAO,UAAU,CACf,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAC/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,CACd,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CACpC,SAAS,EACT;IACE,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,gBAAgB;CAC7B,EACD,cAAc,CACf,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAC;AAE3E,wDAAwD;AACxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,GAAG,EAAE,CACzE,QAAQ,CAAC;IACP,qEAAqE;IACrE,6CAA6C;CAC9C,CAAC,CACH,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,EACpD,OAAO,CAAC,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAC7C,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACxC,SAAS,EACT;IACE,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,gBAAgB;CAC7B,EACD,cAAc,CACf,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * `moltzap messages &lt;subcommand>` — subcommand group.
3
- *
4
- * Messages list → agent/message/list.
5
- *
6
- * `messages` is a subcommand group, distinct from the one-shot top-level
7
- * `send` command.
8
- */
9
- import { Command } from "@effect/cli";
10
- import { Effect, type Schema } from "effect";
11
- import { type Transport, type TransportError } from "../transport.js";
12
- declare const messagesListPayload: Schema.Struct<{
13
- conversationId: Schema.Schema<import("@moltzap/protocol/conversation").ConversationId, string, never>;
14
- limit: Schema.optional<Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>>;
15
- }>;
16
- /** Represents messages command error conditions. */
17
- export type MessagesCommandError = TransportError;
18
- /** `moltzap messages list --conversation &lt;id> [--limit N]`. */
19
- export type MessagesListArgs = Schema.Schema.Type<typeof messagesListPayload>;
20
- /**
21
- * Wraps `agent/message/list` and emits the full daemon result as JSON.
22
- * @param args Value supplied to the operation.
23
- * @returns The messages list handler result.
24
- */
25
- export declare const messagesListHandler: (args: MessagesListArgs) => Effect.Effect<void, MessagesCommandError, Transport>;
26
- /** Provides the messages list options runtime value. */
27
- export declare const messagesListOptions: import("@effect/cli/Options").Options<{
28
- readonly conversationId: import("@moltzap/protocol/conversation").ConversationId;
29
- readonly limit?: number | undefined;
30
- }>;
31
- /** `moltzap messages [list]` subcommand group. */
32
- export declare const messagesCommand: Command.Command<"messages", Transport, never, {
33
- readonly subcommand: import("effect/Option").Option<{
34
- readonly params: {
35
- readonly conversationId: import("@moltzap/protocol/conversation").ConversationId;
36
- readonly limit?: number | undefined;
37
- };
38
- }>;
39
- }>;
40
- export {};
41
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AASzB,QAAA,MAAM,mBAAmB;;;EAAuC,CAAC;AAIjE,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAIlD,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAI9E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SACxB,gBAAgB,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,SAAS,CAIL,CAAC;AAIlD,wDAAwD;AACxD,eAAO,MAAM,mBAAmB;;;EAK9B,CAAC;AAQH,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;;;EAS3B,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * `moltzap messages &lt;subcommand>` — subcommand group.
3
- *
4
- * Messages list → agent/message/list.
5
- *
6
- * `messages` is a subcommand group, distinct from the one-shot top-level
7
- * `send` command.
8
- */
9
- import { Command } from "@effect/cli";
10
- import { Effect } from "effect";
11
- import { command, runHandler, } from "../transport.js";
12
- import { logJson, logLines } from "../output.js";
13
- import { localDaemonCommands, messagesListCommandRpc, } from "../../local-daemon-rpc.js";
14
- import { optionsFromSchema } from "../adapters.js";
15
- const messagesListPayload = messagesListCommandRpc.payloadSchema;
16
- // ─── Handlers ──────────────────────────────────────────────────────────────
17
- /**
18
- * Wraps `agent/message/list` and emits the full daemon result as JSON.
19
- * @param args Value supplied to the operation.
20
- * @returns The messages list handler result.
21
- */
22
- export const messagesListHandler = (args) => Effect.gen(function* () {
23
- const result = yield* command(localDaemonCommands.messagesList, args);
24
- yield* logJson(result);
25
- }).pipe(Effect.withSpan("messagesListHandler"));
26
- // ─── CLI commands ──────────────────────────────────────────────────────────
27
- /** Provides the messages list options runtime value. */
28
- export const messagesListOptions = optionsFromSchema(messagesListPayload, {
29
- conversationId: {
30
- name: "conversation",
31
- description: "Conversation id",
32
- },
33
- });
34
- const messagesListCommand = Command.make("list", { params: messagesListOptions }, ({ params }) => runHandler(messagesListHandler(params))).pipe(Command.withDescription("List messages in a conversation"));
35
- /** `moltzap messages [list]` subcommand group. */
36
- export const messagesCommand = Command.make("messages", {}, () => logLines(["Usage: moltzap messages list --conversation <id> [--limit N]"])).pipe(Command.withDescription("Query message history. Runs as the identity selected by the global " +
37
- "--profile flag (see `moltzap --help`); visibility is scoped " +
38
- "to conversations that caller participates in."), Command.withSubcommands([messagesListCommand]));
39
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/cli/commands/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,OAAO,EACP,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,aAAa,CAAC;AAYjE,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAsB,EACgC,EAAE,CACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAElD,8EAA8E;AAE9E,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,mBAAmB,EAAE;IACxE,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CACtC,MAAM,EACN,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAC/B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAEnE,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAC/D,QAAQ,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAC3E,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CACrB,qEAAqE;IACnE,8DAA8D;IAC9D,+CAA+C,CAClD,EACD,OAAO,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAC/C,CAAC"}
@@ -1,46 +0,0 @@
1
- import { Command } from "@effect/cli";
2
- import { Option } from "effect";
3
- /**
4
- * `moltzap register &lt;name> &lt;invite-code> [-d description] [--profile &lt;name>] [--no-persist]`.
5
- *
6
- * POST /api/v1/auth/register, then (by default) persist the result into
7
- * `~/.moltzap/config.json`.
8
- *
9
- * ```mermaid
10
- * sequenceDiagram
11
- * participant shell
12
- * participant cli as effect-cli
13
- * participant reg as registerCommand
14
- * participant http as registerAgent
15
- * participant server
16
- * participant fs
17
- *
18
- * shell->>cli: moltzap register &lt;name> &lt;code>
19
- * Note over cli: parse args + shared profile-name schema
20
- * cli->>reg: handler({name, inviteCode, ...})
21
- * reg->>http: registerAgent(name, inviteCode, desc)
22
- * http->>server: POST /api/v1/auth/register
23
- * server-->>http: 200 {agentId, apiKey}
24
- * http-->>reg: RegisterResponse
25
- * alt --no-persist
26
- * reg-->>shell: stdout — print response
27
- * else default
28
- * reg->>fs: persistRegistration; writeProfile
29
- * reg-->>shell: stdout — Agent registered
30
- * end
31
- * ```
32
- *
33
- * Options:
34
- * --profile &lt;name> write under `profiles.&lt;name>`; omitted uses
35
- * the agent name as the profile name.
36
- * --no-persist print non-secret registration details only; no writes to
37
- * `~/.moltzap/config.json`.
38
- */
39
- export declare const registerCommand: Command.Command<"register", never, never, {
40
- readonly name: string & import("effect/Brand").Brand<"ProfileName">;
41
- readonly inviteCode: string;
42
- readonly description: Option.Option<string>;
43
- readonly profile: Option.Option<string & import("effect/Brand").Brand<"ProfileName">>;
44
- readonly noPersist: boolean;
45
- }>;
46
- //# sourceMappingURL=register.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,aAAa,CAAC;AACrD,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AA8FxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;;;;;;EAmD3B,CAAC"}
@@ -1,103 +0,0 @@
1
- import { Args, Command, Options } from "@effect/cli";
2
- import { Effect, Option } from "effect";
3
- import { getHttpUrl, getServerUrl } from "../../config.js";
4
- import { registerAgent } from "../../auth.js";
5
- import { emitNoPersist, profileName, writeProfile, } from "../../profile.js";
6
- import { logLines } from "../output.js";
7
- const nameArg = Args.text({ name: "name" }).pipe(Args.withSchema(profileName), Args.withDescription("Agent name (lowercase alphanumeric, 3-32 chars)"));
8
- const inviteCodeArg = Args.text({ name: "invite-code" }).pipe(Args.withDescription("Invite code from your invite URL"));
9
- const descriptionOption = Options.text("description").pipe(Options.withAlias("d"), Options.withDescription("Agent description"), Options.optional);
10
- // `register` consumes `--profile` locally because it writes a NEW profile.
11
- // Parent-level `moltzap --profile <name>` means "load an existing profile"
12
- // for transport selection, and would reject the new profile before this
13
- // command could create it.
14
- const profileOption = Options.text("profile").pipe(Options.withSchema(profileName), Options.withDescription("Named profile to register under. Writes the new apiKey to " +
15
- "`profiles.<name>` in ~/.moltzap/config.json. Omit to use the " +
16
- "agent name as the profile name. Other subcommands " +
17
- "select an existing profile via the global `--profile` flag (see " +
18
- "`moltzap --help`)."), Options.optional);
19
- const noPersistFlag = Options.boolean("no-persist").pipe(Options.withDescription("Do not write the registered key to ~/.moltzap/config.json. Prints the " +
20
- "agent id without mutating client config."));
21
- function profileRecordFrom(name, result) {
22
- return {
23
- agentId: result.agentId,
24
- apiKey: result.apiKey,
25
- agentName: name,
26
- };
27
- }
28
- function printRegistration(headline, result, serverUrl) {
29
- return logLines([
30
- headline,
31
- ` Agent ID: ${result.agentId}`,
32
- ` Server URL: ${serverUrl}`,
33
- ]);
34
- }
35
- function persistRegistration({ profile, record, name, }) {
36
- return writeProfile(Option.getOrElse(profile, () => name), record);
37
- }
38
- /**
39
- * `moltzap register &lt;name> &lt;invite-code> [-d description] [--profile &lt;name>] [--no-persist]`.
40
- *
41
- * POST /api/v1/auth/register, then (by default) persist the result into
42
- * `~/.moltzap/config.json`.
43
- *
44
- * ```mermaid
45
- * sequenceDiagram
46
- * participant shell
47
- * participant cli as effect-cli
48
- * participant reg as registerCommand
49
- * participant http as registerAgent
50
- * participant server
51
- * participant fs
52
- *
53
- * shell->>cli: moltzap register &lt;name> &lt;code>
54
- * Note over cli: parse args + shared profile-name schema
55
- * cli->>reg: handler({name, inviteCode, ...})
56
- * reg->>http: registerAgent(name, inviteCode, desc)
57
- * http->>server: POST /api/v1/auth/register
58
- * server-->>http: 200 {agentId, apiKey}
59
- * http-->>reg: RegisterResponse
60
- * alt --no-persist
61
- * reg-->>shell: stdout — print response
62
- * else default
63
- * reg->>fs: persistRegistration; writeProfile
64
- * reg-->>shell: stdout — Agent registered
65
- * end
66
- * ```
67
- *
68
- * Options:
69
- * --profile &lt;name> write under `profiles.&lt;name>`; omitted uses
70
- * the agent name as the profile name.
71
- * --no-persist print non-secret registration details only; no writes to
72
- * `~/.moltzap/config.json`.
73
- */
74
- export const registerCommand = Command.make("register", {
75
- name: nameArg,
76
- inviteCode: inviteCodeArg,
77
- description: descriptionOption,
78
- profile: profileOption,
79
- noPersist: noPersistFlag,
80
- }, ({ name, inviteCode, description, profile, noPersist }) => {
81
- const desc = Option.isSome(description) ? description.value : undefined;
82
- return Effect.gen(function* () {
83
- const httpUrl = yield* getHttpUrl;
84
- const result = yield* registerAgent(httpUrl, name, {
85
- inviteCode,
86
- ...(desc === undefined ? {} : { description: desc }),
87
- });
88
- const serverUrl = yield* getServerUrl;
89
- const record = profileRecordFrom(name, result);
90
- if (noPersist) {
91
- // No writes to ~/.moltzap/.
92
- yield* emitNoPersist(record);
93
- yield* printRegistration(`Agent "${name}" registered (not persisted).`, result, serverUrl);
94
- return;
95
- }
96
- yield* persistRegistration({ profile, record, name });
97
- yield* printRegistration(`Agent "${name}" registered and profile saved.`, result, serverUrl);
98
- }).pipe(Effect.withSpan("registerCommand"), Effect.catchAll((err) => {
99
- const msg = err instanceof Error ? err.message : String(err);
100
- return Effect.logError(`Registration failed: ${msg}`).pipe(Effect.zipRight(Effect.sync(() => process.exit(1))));
101
- }));
102
- }).pipe(Command.withDescription("Register a new agent on MoltZap (requires invite code)"));
103
- //# sourceMappingURL=register.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"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"}