@moxt-ai/mobius 0.0.3 → 0.0.5

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 (88) hide show
  1. package/dist/acp/session-manager.d.ts.map +1 -1
  2. package/dist/acp/session-manager.js +15 -29
  3. package/dist/acp/session-manager.js.map +1 -1
  4. package/dist/agent-catalog/agent-diagnostics.d.ts +3 -0
  5. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -0
  6. package/dist/agent-catalog/agent-diagnostics.js +62 -0
  7. package/dist/agent-catalog/agent-diagnostics.js.map +1 -0
  8. package/dist/agent-catalog/discover-local-agents.d.ts +77 -0
  9. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -0
  10. package/dist/agent-catalog/discover-local-agents.js +478 -0
  11. package/dist/agent-catalog/discover-local-agents.js.map +1 -0
  12. package/dist/agent-catalog/local-agent.d.ts +38 -0
  13. package/dist/agent-catalog/local-agent.d.ts.map +1 -0
  14. package/dist/agent-catalog/local-agent.js +93 -0
  15. package/dist/agent-catalog/local-agent.js.map +1 -0
  16. package/dist/agent-catalog/publish-agent-catalog.d.ts +3 -0
  17. package/dist/agent-catalog/publish-agent-catalog.d.ts.map +1 -0
  18. package/dist/agent-catalog/publish-agent-catalog.js +58 -0
  19. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -0
  20. package/dist/agent-installation/agent-installation-manager.d.ts +60 -0
  21. package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -0
  22. package/dist/agent-installation/agent-installation-manager.js +242 -0
  23. package/dist/agent-installation/agent-installation-manager.js.map +1 -0
  24. package/dist/agent-installation/automatic-adapter-provisioner.d.ts +18 -0
  25. package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -0
  26. package/dist/agent-installation/automatic-adapter-provisioner.js +116 -0
  27. package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -0
  28. package/dist/agent-installation/fixed-agent-install-recipes.d.ts +20 -0
  29. package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -0
  30. package/dist/agent-installation/fixed-agent-install-recipes.js +163 -0
  31. package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -0
  32. package/dist/agent-installation/fixed-installation-executor.d.ts +20 -0
  33. package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -0
  34. package/dist/agent-installation/fixed-installation-executor.js +213 -0
  35. package/dist/agent-installation/fixed-installation-executor.js.map +1 -0
  36. package/dist/agent-installation/installation-grants.d.ts +2 -0
  37. package/dist/agent-installation/installation-grants.d.ts.map +1 -0
  38. package/dist/agent-installation/installation-grants.js +52 -0
  39. package/dist/agent-installation/installation-grants.js.map +1 -0
  40. package/dist/agent-installation/local-installation-authorizer.d.ts +7 -0
  41. package/dist/agent-installation/local-installation-authorizer.d.ts.map +1 -0
  42. package/dist/agent-installation/local-installation-authorizer.js +32 -0
  43. package/dist/agent-installation/local-installation-authorizer.js.map +1 -0
  44. package/dist/agent-installation/managed-adapter-installer.d.ts +21 -0
  45. package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -0
  46. package/dist/agent-installation/managed-adapter-installer.js +161 -0
  47. package/dist/agent-installation/managed-adapter-installer.js.map +1 -0
  48. package/dist/agent-installation/verified-download.d.ts +24 -0
  49. package/dist/agent-installation/verified-download.d.ts.map +1 -0
  50. package/dist/agent-installation/verified-download.js +158 -0
  51. package/dist/agent-installation/verified-download.js.map +1 -0
  52. package/dist/audit/audit-store.d.ts +1 -0
  53. package/dist/audit/audit-store.d.ts.map +1 -1
  54. package/dist/audit/audit-store.js +12 -4
  55. package/dist/audit/audit-store.js.map +1 -1
  56. package/dist/cli.js +4284 -1178
  57. package/dist/cli.js.map +4 -4
  58. package/dist/config.d.ts +6 -10
  59. package/dist/config.d.ts.map +1 -1
  60. package/dist/config.js +10 -53
  61. package/dist/config.js.map +1 -1
  62. package/dist/index.js +3476 -458
  63. package/dist/index.js.map +4 -4
  64. package/dist/pairing/pair-local-machine.d.ts +2 -2
  65. package/dist/pairing/pair-local-machine.d.ts.map +1 -1
  66. package/dist/pairing/pair-local-machine.js +41 -20
  67. package/dist/pairing/pair-local-machine.js.map +1 -1
  68. package/dist/process/executable.d.ts +40 -0
  69. package/dist/process/executable.d.ts.map +1 -0
  70. package/dist/process/executable.js +313 -0
  71. package/dist/process/executable.js.map +1 -0
  72. package/dist/relay-connection/liveness.d.ts +14 -0
  73. package/dist/relay-connection/liveness.d.ts.map +1 -0
  74. package/dist/relay-connection/liveness.js +102 -0
  75. package/dist/relay-connection/liveness.js.map +1 -0
  76. package/dist/relay-connection/timer.d.ts +8 -0
  77. package/dist/relay-connection/timer.d.ts.map +1 -0
  78. package/dist/relay-connection/timer.js +8 -0
  79. package/dist/relay-connection/timer.js.map +1 -0
  80. package/dist/run-daemon.d.ts +3 -2
  81. package/dist/run-daemon.d.ts.map +1 -1
  82. package/dist/run-daemon.js +272 -22
  83. package/dist/run-daemon.js.map +1 -1
  84. package/dist/storage/state-directory.d.ts +2 -0
  85. package/dist/storage/state-directory.d.ts.map +1 -0
  86. package/dist/storage/state-directory.js +10 -0
  87. package/dist/storage/state-directory.js.map +1 -0
  88. package/package.json +3 -5
package/dist/config.d.ts CHANGED
@@ -1,16 +1,14 @@
1
- export declare class LocalAgentDefinition {
2
- readonly arguments: readonly string[];
3
- readonly command: string;
4
- readonly id: string;
5
- readonly label: string;
6
- constructor(id: string, label: string, command: string, arguments_: readonly string[]);
7
- }
1
+ import { type InstallableAgentDefinition, LocalAgentCatalog, type LocalAgentDefinition } from "./agent-catalog/local-agent.ts";
2
+ export { LocalAgentDefinition } from "./agent-catalog/local-agent.ts";
3
+ export declare function loadApprovedRoot(): string;
8
4
  export interface DaemonConfig {
9
5
  readonly agents: readonly LocalAgentDefinition[];
10
6
  readonly approvedRoot: string;
11
7
  readonly auditDatabasePath: string;
12
8
  readonly bindingId: string;
9
+ readonly catalog: LocalAgentCatalog;
13
10
  readonly channelId: string;
11
+ readonly installableAgents: readonly InstallableAgentDefinition[];
14
12
  readonly relayUrl: URL;
15
13
  }
16
14
  export interface DaemonConnectionConfig {
@@ -19,8 +17,6 @@ export interface DaemonConnectionConfig {
19
17
  readonly channelId: string;
20
18
  readonly relayUrl: URL;
21
19
  }
22
- export declare function loadLocalAgents(): readonly LocalAgentDefinition[];
23
- export declare function createDaemonConfig(connection: DaemonConnectionConfig): DaemonConfig;
24
- export declare function findLocalAgent(agents: readonly LocalAgentDefinition[], agentId: string): LocalAgentDefinition;
20
+ export declare function createDaemonConfig(connection: DaemonConnectionConfig, agents?: readonly LocalAgentDefinition[], installableAgents?: readonly InstallableAgentDefinition[]): DaemonConfig;
25
21
  export declare function loadDaemonConfig(): DaemonConfig;
26
22
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YACE,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAM9B;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;CACxB;AAED,wBAAgB,eAAe,IAAI,SAAS,oBAAoB,EAAE,CA0BjE;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,sBAAsB,GACjC,YAAY,CASd;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,OAAO,EAAE,MAAM,GACd,oBAAoB,CAOtB;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CA2B/C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,iBAAiB,EACjB,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,sBAAsB,EAClC,MAAM,GAAE,SAAS,oBAAoB,EAAO,EAC5C,iBAAiB,GAAE,SAAS,0BAA0B,EAAO,GAC5D,YAAY,CAWd;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAgC/C"}
package/dist/config.js CHANGED
@@ -1,64 +1,22 @@
1
1
  import { fileURLToPath } from "node:url";
2
- const repositoryRoot = fileURLToPath(new URL("../../../", import.meta.url));
3
- function adapterEntrypoint(packageName) {
4
- return fileURLToPath(new URL("./index.js", import.meta.resolve(packageName)));
5
- }
6
- export class LocalAgentDefinition {
7
- arguments;
8
- command;
9
- id;
10
- label;
11
- constructor(id, label, command, arguments_) {
12
- this.id = id;
13
- this.label = label;
14
- this.command = command;
15
- this.arguments = arguments_;
16
- }
17
- }
18
- export function loadLocalAgents() {
2
+ import { LocalAgentCatalog, } from "./agent-catalog/local-agent.js";
3
+ export { LocalAgentDefinition } from "./agent-catalog/local-agent.js";
4
+ export function loadApprovedRoot() {
19
5
  // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
20
- const overridePath = process.env["MOBIUS_ACP_AGENT_PATH"]?.trim();
21
- if (overridePath !== undefined && overridePath.length > 0) {
22
- return [
23
- new LocalAgentDefinition("codex", "Codex", process.execPath, [
24
- overridePath,
25
- "--agent-name",
26
- "Codex",
27
- ]),
28
- new LocalAgentDefinition("claude", "Claude Code", process.execPath, [
29
- overridePath,
30
- "--agent-name",
31
- "Claude Code",
32
- ]),
33
- ];
34
- }
35
- return [
36
- new LocalAgentDefinition("codex", "Codex", process.execPath, [
37
- adapterEntrypoint("@agentclientprotocol/codex-acp"),
38
- ]),
39
- new LocalAgentDefinition("claude", "Claude Code", process.execPath, [
40
- adapterEntrypoint("@agentclientprotocol/claude-agent-acp"),
41
- ]),
42
- ];
6
+ return process.env["MOBIUS_APPROVED_ROOT"] ?? process.cwd();
43
7
  }
44
- export function createDaemonConfig(connection) {
8
+ export function createDaemonConfig(connection, agents = [], installableAgents = []) {
45
9
  return {
46
- agents: loadLocalAgents(),
10
+ agents,
47
11
  approvedRoot: connection.approvedRoot,
48
12
  auditDatabasePath: connection.auditDatabasePath,
49
13
  bindingId: "workspace",
14
+ catalog: new LocalAgentCatalog(agents, installableAgents),
50
15
  channelId: connection.channelId,
16
+ installableAgents,
51
17
  relayUrl: connection.relayUrl,
52
18
  };
53
19
  }
54
- export function findLocalAgent(agents, agentId) {
55
- for (const agent of agents) {
56
- if (agent.id === agentId) {
57
- return agent;
58
- }
59
- }
60
- throw new Error("The requested local agent is not approved");
61
- }
62
20
  export function loadDaemonConfig() {
63
21
  const relayUrl = new URL(
64
22
  // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
@@ -71,8 +29,7 @@ export function loadDaemonConfig() {
71
29
  throw new Error("MOBIUS_RELAY_URL must use ws or wss");
72
30
  }
73
31
  return createDaemonConfig({
74
- // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
75
- approvedRoot: process.env["MOBIUS_APPROVED_ROOT"] ?? repositoryRoot,
32
+ approvedRoot: loadApprovedRoot(),
76
33
  auditDatabasePath:
77
34
  // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
78
35
  process.env["MOBIUS_AUDIT_DATABASE"] ??
@@ -80,6 +37,6 @@ export function loadDaemonConfig() {
80
37
  // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
81
38
  channelId: process.env["MOBIUS_CHANNEL_ID"] ?? "local",
82
39
  relayUrl,
83
- });
40
+ }, [], []);
84
41
  }
85
42
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAEL,iBAAiB,GAElB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,UAAU,gBAAgB;IAC9B,6FAA6F;IAC7F,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9D,CAAC;AAoBD,MAAM,UAAU,kBAAkB,CAChC,UAAkC,EAClC,MAAM,GAAoC,EAAE,EAC5C,iBAAiB,GAA0C,EAAE;IAE7D,OAAO;QACL,MAAM;QACN,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,IAAI,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACzD,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,iBAAiB;QACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG;IACtB,6FAA6F;IAC7F,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC7B,8CAA8C,CACjD,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,GAAG,CACvB,OAAO;IACP,6FAA6F;IAC7F,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,yBAAyB,CAC/D,CAAC;IAEF,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,kBAAkB,CACvB;QACE,YAAY,EAAE,gBAAgB,EAAE;QAChC,iBAAiB;QACf,6FAA6F;QAC7F,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;YACpC,aAAa,CACX,IAAI,GAAG,CAAC,gCAAgC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAC3D;QACH,6FAA6F;QAC7F,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO;QACtD,QAAQ;KACT,EACD,EAAE,EACF,EAAE,CACH,CAAC;AACJ,CAAC"}