oceanbus 0.9.1 → 0.10.1

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 (54) hide show
  1. package/dist/agent/identity.d.ts +4 -0
  2. package/dist/agent/identity.d.ts.map +1 -1
  3. package/dist/agent/identity.js +24 -1
  4. package/dist/agent/identity.js.map +1 -1
  5. package/dist/cli/commands/init.d.ts +3 -0
  6. package/dist/cli/commands/init.d.ts.map +1 -0
  7. package/dist/cli/commands/init.js +34 -0
  8. package/dist/cli/commands/init.js.map +1 -0
  9. package/dist/cli/commands/start.d.ts +13 -0
  10. package/dist/cli/commands/start.d.ts.map +1 -0
  11. package/dist/cli/commands/start.js +359 -0
  12. package/dist/cli/commands/start.js.map +1 -0
  13. package/dist/cli/index.d.ts.map +1 -1
  14. package/dist/cli/index.js +4 -0
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/config/defaults.d.ts.map +1 -1
  17. package/dist/config/defaults.js +1 -0
  18. package/dist/config/defaults.js.map +1 -1
  19. package/dist/crypto/e2e.d.ts +23 -0
  20. package/dist/crypto/e2e.d.ts.map +1 -0
  21. package/dist/crypto/e2e.js +209 -0
  22. package/dist/crypto/e2e.js.map +1 -0
  23. package/dist/crypto/index.d.ts +2 -0
  24. package/dist/crypto/index.d.ts.map +1 -1
  25. package/dist/crypto/index.js +13 -1
  26. package/dist/crypto/index.js.map +1 -1
  27. package/dist/crypto/key-cache.d.ts +15 -0
  28. package/dist/crypto/key-cache.d.ts.map +1 -0
  29. package/dist/crypto/key-cache.js +108 -0
  30. package/dist/crypto/key-cache.js.map +1 -0
  31. package/dist/index.d.ts +7 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +85 -14
  34. package/dist/index.js.map +1 -1
  35. package/dist/mailbox/cursor.d.ts +1 -0
  36. package/dist/mailbox/cursor.d.ts.map +1 -1
  37. package/dist/mailbox/cursor.js +3 -0
  38. package/dist/mailbox/cursor.js.map +1 -1
  39. package/dist/mailbox/sync.d.ts +1 -1
  40. package/dist/mailbox/sync.d.ts.map +1 -1
  41. package/dist/mailbox/sync.js.map +1 -1
  42. package/dist/types/agent.d.ts +2 -0
  43. package/dist/types/agent.d.ts.map +1 -1
  44. package/dist/types/config.d.ts +1 -0
  45. package/dist/types/config.d.ts.map +1 -1
  46. package/dist/types/e2e.d.ts +22 -0
  47. package/dist/types/e2e.d.ts.map +1 -0
  48. package/dist/types/e2e.js +3 -0
  49. package/dist/types/e2e.js.map +1 -0
  50. package/dist/types/index.d.ts +1 -0
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/index.js +1 -0
  53. package/dist/types/index.js.map +1 -1
  54. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { HttpClient } from '../client/http-client';
2
2
  import type { RegistrationData, OpenIDData, AgentState, ApiKeyData } from '../types/agent';
3
+ import type { X25519KeyPair } from '../types/e2e';
3
4
  export declare class AgentIdentityManager {
4
5
  private http;
5
6
  private apiKey;
@@ -7,12 +8,15 @@ export declare class AgentIdentityManager {
7
8
  private extraKeys;
8
9
  private openidCache;
9
10
  private persistedOpenId;
11
+ private encryptionKeyPair;
10
12
  constructor(http: HttpClient, apiKey?: string, agentId?: string);
11
13
  getApiKey(): string | null;
12
14
  getAgentId(): string | null;
13
15
  getCachedOpenId(): string | null;
14
16
  setPersistedOpenId(openid: string): void;
15
17
  getPersistedOpenId(): string | null;
18
+ getEncryptionKeyPair(): X25519KeyPair;
19
+ hasEncryptionKeyPair(): boolean;
16
20
  updateCredential(apiKey: string, agentId?: string): void;
17
21
  register(): Promise<RegistrationData>;
18
22
  newOpenId(): Promise<OpenIDData>;
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ3F,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAuB;IAM1C,OAAO,CAAC,eAAe,CAAuB;gBAElC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM/D,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM,GAAG,IAAI;IAOhC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAMlD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA+BrC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAgBhC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,+FAA+F;IACzF,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAM7B,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAQ7C,WAAW,IAAI,UAAU;IAYzB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQ/C,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAepC;2EACuE;IACjE,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIjD;0DACsD;IAChD,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;2EACuE;IACjE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,OAAO,CAAC,UAAU;CAKnB"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAMlD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAuB;IAM1C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAA8B;gBAE3C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM/D,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM,GAAG,IAAI;IAOhC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,oBAAoB,IAAI,aAAa;IAOrC,oBAAoB,IAAI,OAAO;IAI/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAMlD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA+BrC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAgBhC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,+FAA+F;IACzF,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAM7B,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAQ7C,WAAW,IAAI,UAAU;IAgBzB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAe/C,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAepC;2EACuE;IACjE,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIjD;0DACsD;IAChD,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;2EACuE;IACjE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,OAAO,CAAC,UAAU;CAKnB"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AgentIdentityManager = void 0;
4
4
  const errors_1 = require("../client/errors");
5
5
  const pow_1 = require("../crypto/pow");
6
+ const e2e_1 = require("../crypto/e2e");
6
7
  class AgentIdentityManager {
7
8
  http;
8
9
  apiKey;
@@ -14,6 +15,7 @@ class AgentIdentityManager {
14
15
  // because newOpenId() generates a NEW OpenID each call (anti-tracking nonce).
15
16
  // Service agents need a stable address so others can reach them.
16
17
  persistedOpenId = null;
18
+ encryptionKeyPair = null;
17
19
  constructor(http, apiKey, agentId) {
18
20
  this.http = http;
19
21
  this.apiKey = apiKey || null;
@@ -37,6 +39,15 @@ class AgentIdentityManager {
37
39
  getPersistedOpenId() {
38
40
  return this.persistedOpenId;
39
41
  }
42
+ getEncryptionKeyPair() {
43
+ if (!this.encryptionKeyPair) {
44
+ this.encryptionKeyPair = (0, e2e_1.generateEncryptionKeypair)();
45
+ }
46
+ return this.encryptionKeyPair;
47
+ }
48
+ hasEncryptionKeyPair() {
49
+ return this.encryptionKeyPair !== null;
50
+ }
40
51
  updateCredential(apiKey, agentId) {
41
52
  this.apiKey = apiKey;
42
53
  if (agentId)
@@ -109,12 +120,16 @@ class AgentIdentityManager {
109
120
  if (!this.agentId || !this.apiKey) {
110
121
  throw new errors_1.OceanBusError('Agent identity not initialized');
111
122
  }
112
- return {
123
+ const state = {
113
124
  agent_id: this.agentId,
114
125
  api_key: this.apiKey,
115
126
  openid: this.persistedOpenId || this.openidCache || undefined,
116
127
  extra_keys: this.extraKeys,
117
128
  };
129
+ if (this.encryptionKeyPair) {
130
+ state.encryption_key = (0, e2e_1.serializeKeyPair)(this.encryptionKeyPair);
131
+ }
132
+ return state;
118
133
  }
119
134
  loadFromPersistedState(state) {
120
135
  this.agentId = state.agent_id;
@@ -122,6 +137,14 @@ class AgentIdentityManager {
122
137
  this.extraKeys = state.extra_keys || [];
123
138
  this.openidCache = state.openid || null;
124
139
  this.persistedOpenId = state.openid || null;
140
+ if (state.encryption_key) {
141
+ try {
142
+ this.encryptionKeyPair = (0, e2e_1.deserializeKeyPair)(state.encryption_key);
143
+ }
144
+ catch {
145
+ this.encryptionKeyPair = null;
146
+ }
147
+ }
125
148
  }
126
149
  trackExtraKey(key) {
127
150
  this.extraKeys.push(key);
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandModule } from 'yargs';
2
+ export declare const initCommand: CommandModule;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,eAAO,MAAM,WAAW,EAAE,aA8BzB,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initCommand = void 0;
4
+ const index_1 = require("../../index");
5
+ exports.initCommand = {
6
+ command: 'init',
7
+ describe: 'Initialize OceanBus identity for this machine',
8
+ handler: async () => {
9
+ try {
10
+ const ob = await (0, index_1.createOceanBus)();
11
+ const data = await ob.register();
12
+ const addr = await ob.getAddress();
13
+ console.log('\n' + '═'.repeat(48));
14
+ console.log(' ✅ OceanBus 身份已创建');
15
+ console.log('═'.repeat(48));
16
+ console.log();
17
+ console.log(` OB 地址: ${addr}`);
18
+ console.log();
19
+ console.log(' 下一步:');
20
+ console.log(` 1. 打开 OceanBus Console H5`);
21
+ console.log(` 2. 点击「🔗 绑定新 Agent」`);
22
+ console.log(` 3. 在 Agent 终端运行配对命令`);
23
+ console.log(` 4. 或运行: npx oceanbus start`);
24
+ console.log();
25
+ // Also output machine-readable result for CC parsing
26
+ process.stderr.write(JSON.stringify({ action: 'init-done', openid: addr }) + '\n');
27
+ }
28
+ catch (err) {
29
+ console.error('初始化失败:', err.message);
30
+ process.exit(1);
31
+ }
32
+ },
33
+ };
34
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;AACA,uCAA6C;AAEhC,QAAA,WAAW,GAAkB;IACxC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,+CAA+C;IACzD,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YAEjC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;YAEnC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,qDAAqD;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * oceanbus start — Auto-detect CC mode, announce window, listen + heartbeat.
3
+ *
4
+ * CC mode (auto-detected via CLAUDE_CODE_SESSION_ID or non-TTY stdout):
5
+ * stdout → Monitor JSON (入站消息)
6
+ * stdin ← CC AI reply JSON (出站消息)
7
+ *
8
+ * Terminal mode:
9
+ * console.log text output
10
+ */
11
+ import type { CommandModule } from 'yargs';
12
+ export declare const startCommand: CommandModule;
13
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA2D3C,eAAO,MAAM,YAAY,EAAE,aA4P1B,CAAC"}
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.startCommand = void 0;
37
+ const index_1 = require("../../index");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const os = __importStar(require("os"));
41
+ // ── Config paths ──────────────────────────────────────────────
42
+ const OCEANBUS_DIR = path.join(os.homedir(), '.oceanbus');
43
+ const CREDS_FILE = path.join(OCEANBUS_DIR, 'credentials.json');
44
+ const CONSOLE_DIR = path.join(os.homedir(), '.oceanbus-console');
45
+ const PEERS_FILE = path.join(CONSOLE_DIR, 'peers.json');
46
+ // ── Helpers ───────────────────────────────────────────────────
47
+ function loadJSON(file) {
48
+ try {
49
+ return fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf-8')) : null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ // ── CC detection ──────────────────────────────────────────────
56
+ function isCC() {
57
+ if (process.env.CLAUDE_CODE_SESSION_ID)
58
+ return true;
59
+ // stdin piped or redirected → likely running under Monitor
60
+ if (!process.stdin.isTTY)
61
+ return true;
62
+ return false;
63
+ }
64
+ // ── Window name ───────────────────────────────────────────────
65
+ function windowName() {
66
+ return process.env.OCEANBUS_WINDOW_NAME
67
+ || path.basename(process.cwd())
68
+ || 'unknown';
69
+ }
70
+ // ── Output ────────────────────────────────────────────────────
71
+ const ccMode = isCC();
72
+ function log(msg) { process.stderr.write(`[ob] ${msg}\n`); }
73
+ function emit(event) {
74
+ // CC mode: Monitor JSON to stdout. Terminal mode: pretty print to stderr.
75
+ if (ccMode) {
76
+ process.stdout.write(JSON.stringify(event) + '\n');
77
+ }
78
+ else {
79
+ const text = event.text || '';
80
+ const from = event.from || '?';
81
+ const win = event.window || '';
82
+ console.log(`[${win}] ${from}: ${text}`);
83
+ }
84
+ }
85
+ let cloudBase = 'http://localhost:3000';
86
+ async function resolvePairingCode(code) {
87
+ try {
88
+ const res = await fetch(`${cloudBase}/api/pairing/${code}`);
89
+ if (!res.ok) {
90
+ log(`pairing code invalid: ${res.status}`);
91
+ return null;
92
+ }
93
+ const data = await res.json();
94
+ return data.cloud_openid || null;
95
+ }
96
+ catch (e) {
97
+ log(`pairing resolve failed: ${e.message}`);
98
+ return null;
99
+ }
100
+ }
101
+ // ── Main ──────────────────────────────────────────────────────
102
+ exports.startCommand = {
103
+ command: 'start',
104
+ describe: 'Start listening (auto CC mode, window announce, heartbeat)',
105
+ builder: (yargs) => yargs
106
+ .option('peer', { type: 'string', description: 'H5/Cloud OB openid to connect to' })
107
+ .option('code', { type: 'string', description: '6-char pairing code from H5' })
108
+ .option('gateway-url', { type: 'string', description: 'Cloud API base URL', default: 'http://localhost:3000' }),
109
+ handler: async (argv) => {
110
+ cloudBase = argv['gateway-url'] || process.env.OB_CONSOLE_URL || 'http://localhost:3000';
111
+ // 1. Load or create OB identity
112
+ let creds = loadJSON(CREDS_FILE);
113
+ if (!creds?.openid) {
114
+ log('No identity found. Run "oceanbus init" first.');
115
+ log('Attempting auto-init...');
116
+ try {
117
+ const ob = await (0, index_1.createOceanBus)();
118
+ const reg = await ob.register();
119
+ const openid = await ob.getAddress();
120
+ creds = { agent_id: reg.agent_id, api_key: reg.api_key, openid };
121
+ }
122
+ catch (e) {
123
+ log(`Auto-init failed: ${e.message}`);
124
+ process.exit(1);
125
+ }
126
+ }
127
+ // 2. Resolve peer
128
+ let peers = loadJSON(PEERS_FILE) || {};
129
+ let peerOpenId = argv.peer || '';
130
+ if (argv.code) {
131
+ const resolved = await resolvePairingCode(argv.code);
132
+ if (resolved) {
133
+ peerOpenId = resolved;
134
+ log(`pairing code resolved → ${peerOpenId.slice(0, 8)}...`);
135
+ }
136
+ else {
137
+ log('Failed to resolve pairing code. Continuing without peer.');
138
+ }
139
+ }
140
+ if (!peerOpenId && Object.keys(peers).length > 0) {
141
+ // Use first known peer
142
+ peerOpenId = Object.values(peers)[0].openid;
143
+ log(`using known peer: ${peerOpenId.slice(0, 8)}...`);
144
+ }
145
+ if (peerOpenId && !peers[peerOpenId]) {
146
+ peers[peerOpenId] = { openid: peerOpenId, boundAt: new Date().toISOString() };
147
+ fs.mkdirSync(path.dirname(PEERS_FILE), { recursive: true });
148
+ fs.writeFileSync(PEERS_FILE, JSON.stringify(peers, null, 2));
149
+ }
150
+ // 3. Create OB — use same pattern as Cloud (memory store + explicit identity)
151
+ const ob = await (0, index_1.createOceanBus)({
152
+ keyStore: { type: 'memory' },
153
+ identity: { agent_id: creds.agent_id, api_key: creds.api_key, openid: creds.openid },
154
+ });
155
+ const myAddr = await ob.getAddress();
156
+ const win = windowName();
157
+ log(`ob: ${myAddr.slice(0, 8)}... window: ${win} mode: ${ccMode ? 'CC' : 'terminal'}`);
158
+ if (peerOpenId)
159
+ log(`peer: ${peerOpenId.slice(0, 8)}...`);
160
+ // 4. Announce window-open (HTTP primary, OB fallback)
161
+ const announceBody = JSON.stringify({
162
+ action: 'window-open',
163
+ window: win,
164
+ cwd: process.cwd(),
165
+ agent_name: win,
166
+ agent_openid: myAddr,
167
+ agent_type: 'cc-window',
168
+ });
169
+ if (peerOpenId) {
170
+ // Try HTTP first (reliable, immediate)
171
+ let announced = false;
172
+ try {
173
+ const res = await fetch(`${cloudBase}/api/agent/announce`, {
174
+ method: 'POST',
175
+ headers: { 'Content-Type': 'application/json' },
176
+ body: announceBody,
177
+ });
178
+ if (res.ok) {
179
+ announced = true;
180
+ log(`window-open (HTTP) → Cloud`);
181
+ }
182
+ }
183
+ catch { /* fallback to OB */ }
184
+ // OB fallback
185
+ if (!announced) {
186
+ try {
187
+ await ob.send(peerOpenId, announceBody);
188
+ log(`window-open (OB) → peer`);
189
+ }
190
+ catch (e) {
191
+ log(`window-open failed: ${e.message}`);
192
+ }
193
+ }
194
+ }
195
+ // 5. Heartbeat (HTTP primary, carries current window name for live rename)
196
+ const heartbeat = peerOpenId ? setInterval(() => {
197
+ const currentWin = windowName(); // re-read each beat (CC may have renamed tab)
198
+ const beat = JSON.stringify({ action: 'heartbeat', window: win, newname: currentWin !== win ? currentWin : undefined });
199
+ fetch(`${cloudBase}/api/agent/announce`, {
200
+ method: 'POST',
201
+ headers: { 'Content-Type': 'application/json' },
202
+ body: beat,
203
+ }).catch(() => {
204
+ // HTTP failed, try OB
205
+ ob.send(peerOpenId, beat).catch(() => { });
206
+ });
207
+ }, 15_000) : null;
208
+ // 6. Message dedup
209
+ const seen = new Map();
210
+ // 7. HTTP polling receiver (primary — OB listener may have issues)
211
+ const pollInterval = peerOpenId ? setInterval(async () => {
212
+ try {
213
+ const res = await fetch(`${cloudBase}/api/poll?window=${encodeURIComponent(win)}`);
214
+ const data = await res.json();
215
+ for (const msg of data.messages || []) {
216
+ const text = msg.text || '';
217
+ const dedupKey = `http:${text.slice(0, 50)}`;
218
+ if (seen.has(dedupKey))
219
+ continue;
220
+ seen.set(dedupKey, Date.now());
221
+ emit({
222
+ type: 'wechat_msg',
223
+ chat_id: 'h5',
224
+ sender: 'h5',
225
+ text,
226
+ window: msg.window || win,
227
+ time: msg.time || new Date().toLocaleTimeString('zh-CN', { hour12: false }),
228
+ reply_style: 'detailed',
229
+ });
230
+ }
231
+ }
232
+ catch { /* Cloud not reachable */ }
233
+ }, 2000) : null;
234
+ // 8. OB listener (fallback receive path — shares seen dedup)
235
+ ob.startListening(async (msg) => {
236
+ if (msg.from_openid === myAddr)
237
+ return;
238
+ let parsed;
239
+ try {
240
+ parsed = JSON.parse(msg.content || '{}');
241
+ }
242
+ catch {
243
+ parsed = { text: msg.content || '' };
244
+ }
245
+ const action = parsed.action || parsed.type || 'message';
246
+ const text = parsed.text || '';
247
+ const msgWindow = parsed.window || '';
248
+ // Dedup
249
+ const now = Date.now();
250
+ for (const [k, t] of seen) {
251
+ if (now - t > 5000)
252
+ seen.delete(k);
253
+ }
254
+ const dedupKey = `${msg.from_openid}:${text.slice(0, 50)}`;
255
+ if (seen.has(dedupKey))
256
+ return;
257
+ seen.set(dedupKey, now);
258
+ // Filter: only for us (if window specified, must match)
259
+ if (msgWindow && msgWindow !== win)
260
+ return;
261
+ const time = new Date(msg.created_at || now).toLocaleTimeString('zh-CN', { hour12: false });
262
+ switch (action) {
263
+ case 'bound':
264
+ log(`bound confirmed: ${parsed.agent || parsed.peer_name || '?'}`);
265
+ break;
266
+ case 'message':
267
+ case 'reply':
268
+ case 'command':
269
+ emit({
270
+ type: 'wechat_msg', // Compatible with legacy CC Monitor protocol
271
+ chat_id: parsed.from === 'h5' ? 'h5' : (msg.from_openid || '').slice(0, 10),
272
+ sender: parsed.from || 'agent',
273
+ text,
274
+ window: msgWindow || win,
275
+ time,
276
+ reply_style: 'detailed',
277
+ });
278
+ break;
279
+ default:
280
+ // Unknown action — still emit if has text
281
+ if (text) {
282
+ emit({
283
+ type: 'wechat_msg',
284
+ chat_id: (msg.from_openid || '').slice(0, 10),
285
+ sender: 'agent',
286
+ text,
287
+ window: win,
288
+ time,
289
+ reply_style: 'detailed',
290
+ });
291
+ }
292
+ }
293
+ });
294
+ // 8. Stdin listener (CC AI replies → OB)
295
+ if (ccMode && peerOpenId) {
296
+ let stdinBuf = '';
297
+ process.stdin.setEncoding('utf-8');
298
+ process.stdin.on('data', (chunk) => {
299
+ stdinBuf += chunk;
300
+ const lines = stdinBuf.split('\n');
301
+ stdinBuf = lines.pop() || '';
302
+ for (const line of lines) {
303
+ if (!line.trim())
304
+ continue;
305
+ try {
306
+ const req = JSON.parse(line);
307
+ if (req.type === 'reply' && req.text) {
308
+ ob.send(peerOpenId, JSON.stringify({
309
+ action: 'reply',
310
+ window: req.window || win,
311
+ text: req.text,
312
+ from: 'agent',
313
+ time: new Date().toLocaleTimeString('zh-CN', { hour12: false }),
314
+ })).catch(() => { });
315
+ }
316
+ }
317
+ catch { /* ignore malformed JSON */ }
318
+ }
319
+ });
320
+ process.stdin.resume();
321
+ }
322
+ // 9. Ready
323
+ log('ready — waiting for messages...');
324
+ if (ccMode)
325
+ emit({ type: 'ready', window: win });
326
+ // 10. Graceful shutdown
327
+ let shuttingDown = false;
328
+ async function shutdown() {
329
+ if (shuttingDown)
330
+ return;
331
+ shuttingDown = true;
332
+ log('shutting down...');
333
+ if (heartbeat)
334
+ clearInterval(heartbeat);
335
+ if (peerOpenId) {
336
+ try {
337
+ await fetch(`${cloudBase}/api/agent/announce`, {
338
+ method: 'POST',
339
+ headers: { 'Content-Type': 'application/json' },
340
+ body: JSON.stringify({ action: 'window-close', window: win }),
341
+ });
342
+ }
343
+ catch {
344
+ try {
345
+ await ob.send(peerOpenId, JSON.stringify({ action: 'window-close', window: win }));
346
+ }
347
+ catch { /* best effort */ }
348
+ }
349
+ await new Promise(r => setTimeout(r, 200));
350
+ }
351
+ process.exit(0);
352
+ }
353
+ process.on('SIGINT', shutdown);
354
+ process.on('SIGTERM', shutdown);
355
+ // Keep alive
356
+ await new Promise(() => { });
357
+ },
358
+ };
359
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,uCAA6C;AAC7C,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,iEAAiE;AACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAExD,iEAAiE;AACjE,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IACvF,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,iEAAiE;AACjE,SAAS,IAAI;IACX,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAAE,OAAO,IAAI,CAAC;IACpD,2DAA2D;IAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iEAAiE;AACjE,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB;WAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;WAC5B,SAAS,CAAC;AACjB,CAAC;AAED,iEAAiE;AACjE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;AACtB,SAAS,GAAG,CAAC,GAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS,IAAI,CAAC,KAA8B;IAC1C,0EAA0E;IAC1E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,IAAI,SAAS,GAAG,uBAAuB,CAAC;AACxC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IACnC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAChF,CAAC;AAED,iEAAiE;AACpD,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,4DAA4D;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;SACnF,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;SAC9E,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnH,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;QAC3B,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;QAEzF,gCAAgC;QAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,+CAA+C,CAAC,CAAC;YACrD,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;gBACrC,KAAK,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACnE,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,KAAK,GAAwB,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,GAAG,QAAQ,CAAC;gBACtB,GAAG,CAAC,2BAA2B,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,uBAAuB;YACvB,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5C,GAAG,CAAC,qBAAqB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,8EAA8E;QAC9E,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAc,EAAC;YAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;SAC9E,CAAC,CAAC;QAEV,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACzF,IAAI,UAAU;YAAE,GAAG,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAE1D,sDAAsD;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,GAAG;YACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,MAAM;YACpB,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,CAAC;YACf,uCAAuC;YACvC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,qBAAqB,EAAE;oBACzD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBAAC,SAAS,GAAG,IAAI,CAAC;oBAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAAC,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAEhC,cAAc;YACd,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;oBACxC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;YAC9C,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,8CAA8C;YAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACxH,KAAK,CAAC,GAAG,SAAS,qBAAqB,EAAE;gBACvC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI;aACX,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACZ,sBAAsB;gBACtB,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElB,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEvC,mEAAmE;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;YACvD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,oBAAoB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnF,MAAM,IAAI,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oBACpC,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC/B,IAAI,CAAC;wBACH,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,IAAI;wBACZ,IAAI;wBACJ,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;wBACzB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;wBAC3E,WAAW,EAAE,UAAU;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACvC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhB,6DAA6D;QAC7D,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;YACnC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM;gBAAE,OAAO;YAEvC,IAAI,MAAW,CAAC;YAChB,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAAC,CAAC;YAEjG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;YACzD,MAAM,IAAI,GAAW,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,SAAS,GAAW,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YAE9C,QAAQ;YACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI;oBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAExB,wDAAwD;YACxD,IAAI,SAAS,IAAI,SAAS,KAAK,GAAG;gBAAE,OAAO;YAE3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAE5F,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,OAAO;oBACV,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;oBACnE,MAAM;gBAER,KAAK,SAAS,CAAC;gBACf,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS;oBACZ,IAAI,CAAC;wBACH,IAAI,EAAE,YAAY,EAAG,6CAA6C;wBAClE,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC3E,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;wBAC9B,IAAI;wBACJ,MAAM,EAAE,SAAS,IAAI,GAAG;wBACxB,IAAI;wBACJ,WAAW,EAAE,UAAU;qBACxB,CAAC,CAAC;oBACH,MAAM;gBAER;oBACE,0CAA0C;oBAC1C,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC;4BACH,IAAI,EAAE,YAAY;4BAClB,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;4BAC7C,MAAM,EAAE,OAAO;4BACf,IAAI;4BACJ,MAAM,EAAE,GAAG;4BACX,IAAI;4BACJ,WAAW,EAAE,UAAU;yBACxB,CAAC,CAAC;oBACL,CAAC;YACL,CAAC;QAEH,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACzC,QAAQ,IAAI,KAAK,CAAC;gBAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBAAE,SAAS;oBAC3B,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;4BACrC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gCACjC,MAAM,EAAE,OAAO;gCACf,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;gCACzB,IAAI,EAAE,GAAG,CAAC,IAAI;gCACd,IAAI,EAAE,OAAO;gCACb,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;6BAChE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBACtB,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;QAED,WAAW;QACX,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACvC,IAAI,MAAM;YAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,wBAAwB;QACxB,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,UAAU,QAAQ;YACrB,IAAI,YAAY;gBAAE,OAAO;YACzB,YAAY,GAAG,IAAI,CAAC;YACpB,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACxB,IAAI,SAAS;gBAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,GAAG,SAAS,qBAAqB,EAAE;wBAC7C,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;wBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBACzH,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEhC,aAAa;QACb,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAgBA,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAsB1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAkBA,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAwB1D"}
package/dist/cli/index.js CHANGED
@@ -7,6 +7,8 @@ exports.runCli = runCli;
7
7
  const yargs_1 = __importDefault(require("yargs"));
8
8
  const helpers_1 = require("yargs/helpers");
9
9
  const register_1 = require("./commands/register");
10
+ const init_1 = require("./commands/init");
11
+ const start_1 = require("./commands/start");
10
12
  const whoami_1 = require("./commands/whoami");
11
13
  const openid_1 = require("./commands/openid");
12
14
  const new_openid_1 = require("./commands/new-openid");
@@ -24,6 +26,8 @@ function runCli(argv = process.argv) {
24
26
  .scriptName('oceanbus')
25
27
  .usage('$0 <command> [options]')
26
28
  .command(register_1.registerCommand)
29
+ .command(init_1.initCommand)
30
+ .command(start_1.startCommand)
27
31
  .command(whoami_1.whoamiCommand)
28
32
  .command(openid_1.openidCommand)
29
33
  .command(new_openid_1.newOpenIdCommand)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;AAgBA,wBAsBC;AAtCD,kDAA0B;AAC1B,2CAAwC;AACxC,kDAAsD;AACtD,8CAAkD;AAClD,8CAAkD;AAClD,sDAAyD;AACzD,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,gDAAmD;AACnD,sDAAyD;AACzD,wCAA4C;AAC5C,kDAAsD;AACtD,oDAAwD;AAExD,SAAgB,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IAClD,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;SACjB,UAAU,CAAC,UAAU,CAAC;SACtB,KAAK,CAAC,wBAAwB,CAAC;SAC/B,OAAO,CAAC,0BAAe,CAAC;SACxB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,6BAAgB,CAAC;SACzB,OAAO,CAAC,kBAAW,CAAC;SACpB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,oBAAY,CAAC;SACrB,OAAO,CAAC,gBAAU,CAAC;SACnB,OAAO,CAAC,0BAAe,CAAC;SACxB,OAAO,CAAC,4BAAgB,CAAC;SACzB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,uBAAa,CAAC;SACtB,OAAO,CAAC,6BAAgB,CAAC;SACzB,aAAa,CAAC,CAAC,EAAE,0BAA0B,CAAC;SAC5C,IAAI,EAAE;SACN,OAAO,EAAE;SACT,MAAM,EAAE;SACR,KAAK,EAAE,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;AAkBA,wBAwBC;AA1CD,kDAA0B;AAC1B,2CAAwC;AACxC,kDAAsD;AACtD,0CAA8C;AAC9C,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,sDAAyD;AACzD,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,gDAAmD;AACnD,sDAAyD;AACzD,wCAA4C;AAC5C,kDAAsD;AACtD,oDAAwD;AAExD,SAAgB,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IAClD,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;SACjB,UAAU,CAAC,UAAU,CAAC;SACtB,KAAK,CAAC,wBAAwB,CAAC;SAC/B,OAAO,CAAC,0BAAe,CAAC;SACxB,OAAO,CAAC,kBAAW,CAAC;SACpB,OAAO,CAAC,oBAAY,CAAC;SACrB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,6BAAgB,CAAC;SACzB,OAAO,CAAC,kBAAW,CAAC;SACpB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,oBAAY,CAAC;SACrB,OAAO,CAAC,gBAAU,CAAC;SACnB,OAAO,CAAC,0BAAe,CAAC;SACxB,OAAO,CAAC,4BAAgB,CAAC;SACzB,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,uBAAa,CAAC;SACtB,OAAO,CAAC,6BAAgB,CAAC;SACzB,aAAa,CAAC,CAAC,EAAE,0BAA0B,CAAC;SAC5C,IAAI,EAAE;SACN,OAAO,EAAE;SACT,MAAM,EAAE;SACR,KAAK,EAAE,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,cA2CtB,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,cA4CtB,CAAC"}
@@ -20,6 +20,7 @@ exports.DEFAULTS = {
20
20
  pollIntervalMs: 2000,
21
21
  defaultPageSize: 100,
22
22
  cursorPersistence: true,
23
+ cursorFilePath: undefined,
23
24
  },
24
25
  l1: {
25
26
  // Offline fallback cache for L1 service addresses.
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAmB;IACtC,OAAO,EAAE,mCAAmC;IAE5C,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS,EAAE,sDAAsD;KAC5E;IAED,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,GAAG;YACnB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,CAAC;SACd;KACF;IAED,OAAO,EAAE;QACP,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,GAAG;QACpB,iBAAiB,EAAE,IAAI;KACxB;IAED,EAAE,EAAE;QACF,mDAAmD;QACnD,8DAA8D;QAC9D,6DAA6D;QAC7D,sEAAsE;QACtE,SAAS,EAAE;YACT,kFAAkF;SACnF;QACD,SAAS,EAAE,kFAAkF;QAC7F,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,KAAK;QACvB,qBAAqB,EAAE,IAAI;QAC3B,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,uCAAuC;KAC5E;IAED,WAAW,EAAE;QACX,OAAO,EAAE,KAAK;KACf;CAEF,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAmB;IACtC,OAAO,EAAE,mCAAmC;IAE5C,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS,EAAE,sDAAsD;KAC5E;IAED,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,GAAG;YACnB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,CAAC;SACd;KACF;IAED,OAAO,EAAE;QACP,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,GAAG;QACpB,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,SAAS;KAC1B;IAED,EAAE,EAAE;QACF,mDAAmD;QACnD,8DAA8D;QAC9D,6DAA6D;QAC7D,sEAAsE;QACtE,SAAS,EAAE;YACT,kFAAkF;SACnF;QACD,SAAS,EAAE,kFAAkF;QAC7F,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,KAAK;QACvB,qBAAqB,EAAE,IAAI;QAC3B,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,uCAAuC;KAC5E;IAED,WAAW,EAAE;QACX,OAAO,EAAE,KAAK;KACf;CAEF,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { X25519KeyPair, PersistedEncryptionKey, DecryptResult } from '../types/e2e';
2
+ export declare function generateEncryptionKeypair(): X25519KeyPair;
3
+ export declare function serializePublicKey(pk: Uint8Array): string;
4
+ export declare function deserializePublicKey(s: string): Uint8Array;
5
+ export declare function serializeKeyPair(kp: X25519KeyPair): PersistedEncryptionKey;
6
+ export declare function deserializeKeyPair(p: PersistedEncryptionKey): X25519KeyPair;
7
+ export declare function deriveSharedSecret(ourPriv: Uint8Array, ourPub: Uint8Array, theirPub: Uint8Array): Uint8Array;
8
+ /**
9
+ * Encrypt plaintext for a recipient whose public key we have.
10
+ * Produces an EncryptedEnvelope JSON string.
11
+ */
12
+ export declare function encrypt(plaintext: string, ourKP: X25519KeyPair, theirPub: Uint8Array): string;
13
+ /**
14
+ * Wrap plaintext in a key-advertisement envelope.
15
+ * Used when we don't have the recipient's public key yet (first message).
16
+ */
17
+ export declare function wrapPlaintext(plaintext: string, ourKP: X25519KeyPair): string;
18
+ /**
19
+ * Try to decrypt/unwrap an envelope. Returns null if the content is
20
+ * not a recognized envelope (plaintext from old clients, etc.).
21
+ */
22
+ export declare function tryDecrypt(raw: string, ourKP: X25519KeyPair): DecryptResult | null;
23
+ //# sourceMappingURL=e2e.d.ts.map