appduct 0.10.0 → 0.11.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 (230) hide show
  1. package/README.md +121 -51
  2. package/dist/artifact-inspect.d.ts +0 -1
  3. package/dist/bin.d.ts +0 -1
  4. package/dist/bin.js +1250 -2
  5. package/dist/cli/command-options.d.ts +8 -1
  6. package/dist/cli/create-cli.d.ts +0 -1
  7. package/dist/cli/dispatch.d.ts +10 -1
  8. package/dist/cli/envelope.d.ts +19 -0
  9. package/dist/cli/global-flags.d.ts +30 -0
  10. package/dist/cli/open-target.d.ts +25 -8
  11. package/dist/cli/result-types.d.ts +30 -5
  12. package/dist/cli/router.d.ts +78 -0
  13. package/dist/cli/routes/daemon/index.d.ts +9 -0
  14. package/dist/cli/routes/daemon/index.js +848 -0
  15. package/dist/cli/routes/daemon/run.d.ts +3 -0
  16. package/dist/cli/routes/daemon/run.js +3246 -0
  17. package/dist/cli/routes/daemon/start.d.ts +3 -0
  18. package/dist/cli/routes/daemon/start.js +1668 -0
  19. package/dist/cli/routes/daemon/status.d.ts +4 -0
  20. package/dist/cli/routes/daemon/status.js +1676 -0
  21. package/dist/cli/routes/daemon/stop.d.ts +4 -0
  22. package/dist/cli/routes/daemon/stop.js +1646 -0
  23. package/dist/cli/routes/doctor.d.ts +3 -0
  24. package/dist/cli/routes/doctor.js +1075 -0
  25. package/dist/cli/routes/events.d.ts +3 -0
  26. package/dist/cli/routes/events.js +1906 -0
  27. package/dist/cli/routes/init.d.ts +3 -0
  28. package/dist/cli/routes/init.js +1486 -0
  29. package/dist/cli/routes/invoke.d.ts +3 -0
  30. package/dist/cli/routes/invoke.js +1884 -0
  31. package/dist/cli/routes/keygen.d.ts +3 -0
  32. package/dist/cli/routes/keygen.js +928 -0
  33. package/dist/cli/routes/link.d.ts +3 -0
  34. package/dist/cli/routes/link.js +2705 -0
  35. package/dist/cli/routes/ls.d.ts +3 -0
  36. package/dist/cli/routes/ls.js +1659 -0
  37. package/dist/cli/routes/mcp.d.ts +5 -0
  38. package/dist/cli/routes/mcp.js +3917 -0
  39. package/dist/cli/routes/revoke.d.ts +3 -0
  40. package/dist/cli/routes/revoke.js +1675 -0
  41. package/dist/cli/routes/tools.d.ts +3 -0
  42. package/dist/cli/routes/tools.js +1851 -0
  43. package/dist/cli/runner.d.ts +3 -11
  44. package/dist/cli/types.d.ts +9 -6
  45. package/dist/cli/version-guard.d.ts +20 -0
  46. package/dist/cli.d.ts +0 -1
  47. package/dist/client/app-client.d.ts +0 -1
  48. package/dist/client/bootstrap.d.ts +4 -4
  49. package/dist/client/connect.d.ts +0 -1
  50. package/dist/client/errors.d.ts +0 -1
  51. package/dist/client/index.d.ts +0 -1
  52. package/dist/client/index.js +2379 -16
  53. package/dist/commands/daemon/context.d.ts +14 -0
  54. package/dist/commands/daemon/run.d.ts +11 -0
  55. package/dist/commands/daemon/start.d.ts +5 -0
  56. package/dist/commands/daemon/status.d.ts +5 -0
  57. package/dist/commands/daemon/stop.d.ts +5 -0
  58. package/dist/commands/doctor.d.ts +0 -1
  59. package/dist/commands/events.d.ts +0 -1
  60. package/dist/commands/init.d.ts +17 -4
  61. package/dist/commands/invoke.d.ts +0 -1
  62. package/dist/commands/keygen.d.ts +0 -1
  63. package/dist/commands/link.d.ts +1 -2
  64. package/dist/commands/ls.d.ts +0 -1
  65. package/dist/commands/mcp.d.ts +2 -4
  66. package/dist/commands/revoke.d.ts +0 -1
  67. package/dist/commands/tools.d.ts +19 -3
  68. package/dist/daemon/address.d.ts +0 -1
  69. package/dist/daemon/audit.d.ts +6 -11
  70. package/dist/daemon/calls.d.ts +0 -1
  71. package/dist/daemon/config.d.ts +13 -16
  72. package/dist/daemon/daemon.d.ts +0 -1
  73. package/dist/daemon/event-bus.d.ts +0 -1
  74. package/dist/daemon/links.d.ts +0 -1
  75. package/dist/daemon/listener.d.ts +0 -1
  76. package/dist/daemon/log-rotation.d.ts +0 -1
  77. package/dist/daemon/pidfile.d.ts +14 -8
  78. package/dist/daemon/policy.d.ts +0 -1
  79. package/dist/daemon/registry.d.ts +0 -1
  80. package/dist/daemon/rpc-errors.d.ts +16 -0
  81. package/dist/daemon/rpc-server.d.ts +0 -11
  82. package/dist/daemon/sessions.d.ts +0 -1
  83. package/dist/daemon/socket-probe.d.ts +0 -1
  84. package/dist/daemon/state-dir.d.ts +0 -1
  85. package/dist/daemon/timers.d.ts +0 -1
  86. package/dist/daemon/tls.d.ts +0 -1
  87. package/dist/errors.d.ts +0 -1
  88. package/dist/host-certificate.d.ts +0 -1
  89. package/dist/index.d.ts +0 -1
  90. package/dist/index.js +1307 -3
  91. package/dist/key-material.d.ts +0 -1
  92. package/dist/link.d.ts +8 -7
  93. package/dist/mcp/app-tools.d.ts +153 -0
  94. package/dist/mcp/connect-tool.d.ts +14 -8
  95. package/dist/mcp/daemon-tools.d.ts +2 -11
  96. package/dist/mcp/events-tool.d.ts +0 -1
  97. package/dist/mcp/server.d.ts +33 -14
  98. package/dist/native-scheme.d.ts +0 -1
  99. package/dist/output.d.ts +8 -11
  100. package/dist/package-root.d.ts +11 -0
  101. package/dist/package-version.d.ts +0 -1
  102. package/dist/qr-terminal.d.ts +0 -1
  103. package/dist/rpc/client.d.ts +0 -1
  104. package/dist/scheme.d.ts +60 -2
  105. package/dist/spki-pin.d.ts +0 -1
  106. package/package.json +4 -3
  107. package/dist/artifact-inspect.d.ts.map +0 -1
  108. package/dist/artifact-inspect.js +0 -334
  109. package/dist/bin.d.ts.map +0 -1
  110. package/dist/cli/command-options.d.ts.map +0 -1
  111. package/dist/cli/command-options.js +0 -95
  112. package/dist/cli/create-cli.d.ts.map +0 -1
  113. package/dist/cli/create-cli.js +0 -56
  114. package/dist/cli/dispatch.d.ts.map +0 -1
  115. package/dist/cli/dispatch.js +0 -275
  116. package/dist/cli/open-target.d.ts.map +0 -1
  117. package/dist/cli/open-target.js +0 -438
  118. package/dist/cli/result-types.d.ts.map +0 -1
  119. package/dist/cli/result-types.js +0 -6
  120. package/dist/cli/runner.d.ts.map +0 -1
  121. package/dist/cli/runner.js +0 -111
  122. package/dist/cli/types.d.ts.map +0 -1
  123. package/dist/cli/types.js +0 -10
  124. package/dist/cli.d.ts.map +0 -1
  125. package/dist/cli.js +0 -2
  126. package/dist/client/app-client.d.ts.map +0 -1
  127. package/dist/client/app-client.js +0 -223
  128. package/dist/client/bootstrap.d.ts.map +0 -1
  129. package/dist/client/bootstrap.js +0 -108
  130. package/dist/client/connect.d.ts.map +0 -1
  131. package/dist/client/connect.js +0 -38
  132. package/dist/client/errors.d.ts.map +0 -1
  133. package/dist/client/errors.js +0 -40
  134. package/dist/client/index.d.ts.map +0 -1
  135. package/dist/commands/daemon.d.ts +0 -22
  136. package/dist/commands/daemon.d.ts.map +0 -1
  137. package/dist/commands/daemon.js +0 -128
  138. package/dist/commands/doctor.d.ts.map +0 -1
  139. package/dist/commands/doctor.js +0 -42
  140. package/dist/commands/events.d.ts.map +0 -1
  141. package/dist/commands/events.js +0 -76
  142. package/dist/commands/init.d.ts.map +0 -1
  143. package/dist/commands/init.js +0 -231
  144. package/dist/commands/invoke.d.ts.map +0 -1
  145. package/dist/commands/invoke.js +0 -54
  146. package/dist/commands/keygen.d.ts.map +0 -1
  147. package/dist/commands/keygen.js +0 -46
  148. package/dist/commands/link.d.ts.map +0 -1
  149. package/dist/commands/link.js +0 -43
  150. package/dist/commands/ls.d.ts.map +0 -1
  151. package/dist/commands/ls.js +0 -7
  152. package/dist/commands/mcp.d.ts.map +0 -1
  153. package/dist/commands/mcp.js +0 -98
  154. package/dist/commands/revoke.d.ts.map +0 -1
  155. package/dist/commands/revoke.js +0 -7
  156. package/dist/commands/tools.d.ts.map +0 -1
  157. package/dist/commands/tools.js +0 -52
  158. package/dist/daemon/address.d.ts.map +0 -1
  159. package/dist/daemon/address.js +0 -71
  160. package/dist/daemon/audit.d.ts.map +0 -1
  161. package/dist/daemon/audit.js +0 -237
  162. package/dist/daemon/calls.d.ts.map +0 -1
  163. package/dist/daemon/calls.js +0 -158
  164. package/dist/daemon/config.d.ts.map +0 -1
  165. package/dist/daemon/config.js +0 -170
  166. package/dist/daemon/daemon.d.ts.map +0 -1
  167. package/dist/daemon/daemon.js +0 -560
  168. package/dist/daemon/event-bus.d.ts.map +0 -1
  169. package/dist/daemon/event-bus.js +0 -111
  170. package/dist/daemon/links.d.ts.map +0 -1
  171. package/dist/daemon/links.js +0 -118
  172. package/dist/daemon/listener.d.ts.map +0 -1
  173. package/dist/daemon/listener.js +0 -132
  174. package/dist/daemon/log-rotation.d.ts.map +0 -1
  175. package/dist/daemon/log-rotation.js +0 -136
  176. package/dist/daemon/pidfile.d.ts.map +0 -1
  177. package/dist/daemon/pidfile.js +0 -90
  178. package/dist/daemon/policy.d.ts.map +0 -1
  179. package/dist/daemon/policy.js +0 -24
  180. package/dist/daemon/registry.d.ts.map +0 -1
  181. package/dist/daemon/registry.js +0 -31
  182. package/dist/daemon/rpc-server.d.ts.map +0 -1
  183. package/dist/daemon/rpc-server.js +0 -203
  184. package/dist/daemon/sessions.d.ts.map +0 -1
  185. package/dist/daemon/sessions.js +0 -429
  186. package/dist/daemon/socket-probe.d.ts.map +0 -1
  187. package/dist/daemon/socket-probe.js +0 -28
  188. package/dist/daemon/state-dir.d.ts.map +0 -1
  189. package/dist/daemon/state-dir.js +0 -43
  190. package/dist/daemon/timers.d.ts.map +0 -1
  191. package/dist/daemon/timers.js +0 -12
  192. package/dist/daemon/tls.d.ts.map +0 -1
  193. package/dist/daemon/tls.js +0 -79
  194. package/dist/errors.d.ts.map +0 -1
  195. package/dist/errors.js +0 -162
  196. package/dist/host-certificate.d.ts.map +0 -1
  197. package/dist/host-certificate.js +0 -111
  198. package/dist/index.d.ts.map +0 -1
  199. package/dist/key-material.d.ts.map +0 -1
  200. package/dist/key-material.js +0 -42
  201. package/dist/link.d.ts.map +0 -1
  202. package/dist/link.js +0 -117
  203. package/dist/mcp/connect-tool.d.ts.map +0 -1
  204. package/dist/mcp/connect-tool.js +0 -396
  205. package/dist/mcp/daemon-tools.d.ts.map +0 -1
  206. package/dist/mcp/daemon-tools.js +0 -29
  207. package/dist/mcp/events-tool.d.ts.map +0 -1
  208. package/dist/mcp/events-tool.js +0 -322
  209. package/dist/mcp/server.d.ts.map +0 -1
  210. package/dist/mcp/server.js +0 -538
  211. package/dist/mcp/tool-mapping.d.ts +0 -58
  212. package/dist/mcp/tool-mapping.d.ts.map +0 -1
  213. package/dist/mcp/tool-mapping.js +0 -143
  214. package/dist/mcp/tool-namespace.d.ts +0 -40
  215. package/dist/mcp/tool-namespace.d.ts.map +0 -1
  216. package/dist/mcp/tool-namespace.js +0 -65
  217. package/dist/native-scheme.d.ts.map +0 -1
  218. package/dist/native-scheme.js +0 -465
  219. package/dist/output.d.ts.map +0 -1
  220. package/dist/output.js +0 -342
  221. package/dist/package-version.d.ts.map +0 -1
  222. package/dist/package-version.js +0 -47
  223. package/dist/qr-terminal.d.ts.map +0 -1
  224. package/dist/qr-terminal.js +0 -45
  225. package/dist/rpc/client.d.ts.map +0 -1
  226. package/dist/rpc/client.js +0 -819
  227. package/dist/scheme.d.ts.map +0 -1
  228. package/dist/scheme.js +0 -321
  229. package/dist/spki-pin.d.ts.map +0 -1
  230. package/dist/spki-pin.js +0 -14
@@ -1,170 +0,0 @@
1
- /**
2
- * `config.json` loading and validation (ARCHITECTURE.md §3). All fields are optional; unknown
3
- * top-level keys produce a warning (not an error); invalid values throw a clear error naming the
4
- * offending key.
5
- */
6
- import { readFile } from "node:fs/promises";
7
- const KNOWN_TOP_LEVEL_KEYS = new Set([
8
- "wssPort",
9
- "keyPath",
10
- "graceSeconds",
11
- "linkTtlSeconds",
12
- "keepaliveIntervalSeconds",
13
- "eventBufferSize",
14
- "auditRetentionDays",
15
- "daemonLogMaxBytes",
16
- "policy",
17
- "advertisedIp",
18
- "scheme",
19
- "iosBundleId",
20
- "restartDaemonOnVersionMismatch",
21
- ]);
22
- const KNOWN_POLICY_KEYS = new Set(["default", "destructive", "tools"]);
23
- const POLICY_DECISIONS = new Set(["allow", "deny", "prompt"]);
24
- export const DEFAULT_AUDIT_RETENTION_DAYS = 30;
25
- export const DEFAULT_DAEMON_LOG_MAX_BYTES = 10 * 1024 * 1024;
26
- export class AppductConfigError extends Error {
27
- key;
28
- constructor(key, message) {
29
- super(message);
30
- this.key = key;
31
- this.name = "AppductConfigError";
32
- }
33
- }
34
- const configError = (key, message) => {
35
- return new AppductConfigError(key, `Invalid Appduct config value for "${key}": ${message}`);
36
- };
37
- const requirePositiveInteger = (value, key) => {
38
- if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) {
39
- throw configError(key, "must be a positive integer.");
40
- }
41
- return value;
42
- };
43
- const requireNonEmptyString = (value, key) => {
44
- if (typeof value !== "string" || value.length === 0) {
45
- throw configError(key, "must be a non-empty string.");
46
- }
47
- return value;
48
- };
49
- const requireBoolean = (value, key) => {
50
- if (typeof value !== "boolean") {
51
- throw configError(key, "must be a boolean.");
52
- }
53
- return value;
54
- };
55
- const requirePolicyDecision = (value, key) => {
56
- if (typeof value !== "string" || !POLICY_DECISIONS.has(value)) {
57
- throw configError(key, 'must be "allow", "deny", or "prompt".');
58
- }
59
- return value;
60
- };
61
- export const defaultConfig = (paths) => {
62
- return {
63
- wssPort: 8443,
64
- keyPath: paths.keyPath,
65
- graceSeconds: 600,
66
- linkTtlSeconds: 300,
67
- keepaliveIntervalSeconds: 15,
68
- eventBufferSize: 256,
69
- auditRetentionDays: DEFAULT_AUDIT_RETENTION_DAYS,
70
- daemonLogMaxBytes: DEFAULT_DAEMON_LOG_MAX_BYTES,
71
- restartDaemonOnVersionMismatch: false,
72
- policy: {
73
- default: "allow",
74
- destructive: "allow",
75
- },
76
- };
77
- };
78
- /** Loads and validates `<state-dir>/config.json`, falling back to defaults when it is missing. */
79
- export const loadConfig = async (paths, options = {}) => {
80
- const warn = options.warn ?? (() => { });
81
- const config = defaultConfig(paths);
82
- let raw;
83
- try {
84
- raw = JSON.parse(await readFile(paths.configPath, "utf8"));
85
- }
86
- catch (error) {
87
- if (error.code === "ENOENT") {
88
- return config;
89
- }
90
- throw configError("config.json", `could not be read/parsed (${error.message}).`);
91
- }
92
- if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
93
- throw configError("config.json", "must be a JSON object.");
94
- }
95
- const parsed = raw;
96
- for (const key of Object.keys(parsed)) {
97
- if (!KNOWN_TOP_LEVEL_KEYS.has(key)) {
98
- warn(`Unknown Appduct config key "${key}" is ignored.`);
99
- }
100
- }
101
- if (parsed.wssPort !== undefined) {
102
- config.wssPort = requirePositiveInteger(parsed.wssPort, "wssPort");
103
- }
104
- if (parsed.keyPath !== undefined) {
105
- config.keyPath = requireNonEmptyString(parsed.keyPath, "keyPath");
106
- }
107
- if (parsed.advertisedIp !== undefined) {
108
- config.advertisedIp = requireNonEmptyString(parsed.advertisedIp, "advertisedIp");
109
- }
110
- if (parsed.scheme !== undefined) {
111
- config.scheme = requireNonEmptyString(parsed.scheme, "scheme");
112
- }
113
- // Only a non-empty string here, like `scheme` — deliberately *not* the bundle-id charset check.
114
- // This loader runs on every daemon start, and a typo in a CLI-side convenience key must not stop
115
- // the daemon from starting. The charset is enforced where the value is actually used (`mintLink`,
116
- // `handleConnectTool`, and `deliverToOpenTarget` itself), which is where it can be reported as a
117
- // usage error against the command that needed it.
118
- if (parsed.iosBundleId !== undefined) {
119
- config.iosBundleId = requireNonEmptyString(parsed.iosBundleId, "iosBundleId");
120
- }
121
- if (parsed.graceSeconds !== undefined) {
122
- config.graceSeconds = requirePositiveInteger(parsed.graceSeconds, "graceSeconds");
123
- }
124
- if (parsed.linkTtlSeconds !== undefined) {
125
- config.linkTtlSeconds = requirePositiveInteger(parsed.linkTtlSeconds, "linkTtlSeconds");
126
- }
127
- if (parsed.keepaliveIntervalSeconds !== undefined) {
128
- config.keepaliveIntervalSeconds = requirePositiveInteger(parsed.keepaliveIntervalSeconds, "keepaliveIntervalSeconds");
129
- }
130
- if (parsed.eventBufferSize !== undefined) {
131
- config.eventBufferSize = requirePositiveInteger(parsed.eventBufferSize, "eventBufferSize");
132
- }
133
- if (parsed.auditRetentionDays !== undefined) {
134
- config.auditRetentionDays = requirePositiveInteger(parsed.auditRetentionDays, "auditRetentionDays");
135
- }
136
- if (parsed.daemonLogMaxBytes !== undefined) {
137
- config.daemonLogMaxBytes = requirePositiveInteger(parsed.daemonLogMaxBytes, "daemonLogMaxBytes");
138
- }
139
- if (parsed.restartDaemonOnVersionMismatch !== undefined) {
140
- config.restartDaemonOnVersionMismatch = requireBoolean(parsed.restartDaemonOnVersionMismatch, "restartDaemonOnVersionMismatch");
141
- }
142
- if (parsed.policy !== undefined) {
143
- if (typeof parsed.policy !== "object" || parsed.policy === null || Array.isArray(parsed.policy)) {
144
- throw configError("policy", "must be an object.");
145
- }
146
- const policy = parsed.policy;
147
- for (const key of Object.keys(policy)) {
148
- if (!KNOWN_POLICY_KEYS.has(key)) {
149
- warn(`Unknown Appduct config key "policy.${key}" is ignored.`);
150
- }
151
- }
152
- if (policy.default !== undefined) {
153
- config.policy.default = requirePolicyDecision(policy.default, "policy.default");
154
- }
155
- if (policy.destructive !== undefined) {
156
- config.policy.destructive = requirePolicyDecision(policy.destructive, "policy.destructive");
157
- }
158
- if (policy.tools !== undefined) {
159
- if (typeof policy.tools !== "object" || policy.tools === null || Array.isArray(policy.tools)) {
160
- throw configError("policy.tools", "must be an object.");
161
- }
162
- const tools = {};
163
- for (const [toolKey, toolValue] of Object.entries(policy.tools)) {
164
- tools[toolKey] = requirePolicyDecision(toolValue, `policy.tools["${toolKey}"]`);
165
- }
166
- config.policy.tools = tools;
167
- }
168
- }
169
- return config;
170
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmB/E,iGAAiG;AACjG,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB;;oFAEgF;IAChF,aAAa,CAAC,EAAE,MAAM,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,yGAAyG;IACzG,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAkOF,eAAO,MAAM,WAAW,GAAU,SAAS,aAAa,KAAG,OAAO,CAAC,aAAa,CAkb/E,CAAC"}