@tloncorp/openclaw 0.4.3 → 0.6.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 (112) hide show
  1. package/README.md +130 -141
  2. package/dist/index.js +703 -152
  3. package/dist/index.js.map +1 -1
  4. package/dist/setup-api.js +2 -2
  5. package/dist/setup-entry.js +2 -2
  6. package/dist/setup-entry.js.map +1 -1
  7. package/dist/src/account-fields.js +7 -3
  8. package/dist/src/account-fields.js.map +1 -1
  9. package/dist/src/actions.js +73 -52
  10. package/dist/src/actions.js.map +1 -1
  11. package/dist/src/channel.js +63 -39
  12. package/dist/src/channel.js.map +1 -1
  13. package/dist/src/channel.runtime.js +61 -32
  14. package/dist/src/channel.runtime.js.map +1 -1
  15. package/dist/src/config-schema.js +24 -4
  16. package/dist/src/config-schema.js.map +1 -1
  17. package/dist/src/diagnostic-subscriptions.js +49 -0
  18. package/dist/src/diagnostic-subscriptions.js.map +1 -0
  19. package/dist/src/effective-owner.js.map +1 -1
  20. package/dist/src/gateway-status.js +55 -7
  21. package/dist/src/gateway-status.js.map +1 -1
  22. package/dist/src/monitor/approval.js +71 -62
  23. package/dist/src/monitor/approval.js.map +1 -1
  24. package/dist/src/monitor/command-auth.js +7 -7
  25. package/dist/src/monitor/command-auth.js.map +1 -1
  26. package/dist/src/monitor/command-bridge.js +3 -2
  27. package/dist/src/monitor/command-bridge.js.map +1 -1
  28. package/dist/src/monitor/computing-presence.js +76 -12
  29. package/dist/src/monitor/computing-presence.js.map +1 -1
  30. package/dist/src/monitor/discovery.js +16 -9
  31. package/dist/src/monitor/discovery.js.map +1 -1
  32. package/dist/src/monitor/history.js +58 -26
  33. package/dist/src/monitor/history.js.map +1 -1
  34. package/dist/src/monitor/index.js +3018 -2496
  35. package/dist/src/monitor/index.js.map +1 -1
  36. package/dist/src/monitor/media.js +106 -78
  37. package/dist/src/monitor/media.js.map +1 -1
  38. package/dist/src/monitor/nudge-runner.js +36 -27
  39. package/dist/src/monitor/nudge-runner.js.map +1 -1
  40. package/dist/src/monitor/nudge-state.js +7 -11
  41. package/dist/src/monitor/nudge-state.js.map +1 -1
  42. package/dist/src/monitor/owner-reply-persistence.js +27 -26
  43. package/dist/src/monitor/owner-reply-persistence.js.map +1 -1
  44. package/dist/src/monitor/processed-messages.js.map +1 -1
  45. package/dist/src/monitor/session-routing.js +261 -0
  46. package/dist/src/monitor/session-routing.js.map +1 -0
  47. package/dist/src/monitor/settings-sync.js +1 -8
  48. package/dist/src/monitor/settings-sync.js.map +1 -1
  49. package/dist/src/monitor/utils.js +77 -71
  50. package/dist/src/monitor/utils.js.map +1 -1
  51. package/dist/src/nudge-decision.js +40 -43
  52. package/dist/src/nudge-decision.js.map +1 -1
  53. package/dist/src/nudge-messages.js +9 -9
  54. package/dist/src/nudge-scheduler.js.map +1 -1
  55. package/dist/src/owner-listen-command.js +38 -28
  56. package/dist/src/owner-listen-command.js.map +1 -1
  57. package/dist/src/pending-nudge.js.map +1 -1
  58. package/dist/src/runtime.js +10 -6
  59. package/dist/src/runtime.js.map +1 -1
  60. package/dist/src/session-roles.js +2 -1
  61. package/dist/src/session-roles.js.map +1 -1
  62. package/dist/src/session-route.js +44 -0
  63. package/dist/src/session-route.js.map +1 -0
  64. package/dist/src/settings.js +233 -102
  65. package/dist/src/settings.js.map +1 -1
  66. package/dist/src/setup-core.js +32 -32
  67. package/dist/src/setup-core.js.map +1 -1
  68. package/dist/src/setup-surface.js +19 -19
  69. package/dist/src/setup-surface.js.map +1 -1
  70. package/dist/src/shared-state.js +46 -0
  71. package/dist/src/shared-state.js.map +1 -0
  72. package/dist/src/targets.js +17 -10
  73. package/dist/src/targets.js.map +1 -1
  74. package/dist/src/telemetry.js +764 -34
  75. package/dist/src/telemetry.js.map +1 -1
  76. package/dist/src/tlon-binary.js +20 -12
  77. package/dist/src/tlon-binary.js.map +1 -1
  78. package/dist/src/tlon-tool-guard.js +5 -5
  79. package/dist/src/tool-trace.js +17 -13
  80. package/dist/src/tool-trace.js.map +1 -1
  81. package/dist/src/types.js +30 -12
  82. package/dist/src/types.js.map +1 -1
  83. package/dist/src/urbit/api-client.js +16 -12
  84. package/dist/src/urbit/api-client.js.map +1 -1
  85. package/dist/src/urbit/auth.js +9 -9
  86. package/dist/src/urbit/auth.js.map +1 -1
  87. package/dist/src/urbit/base-url.js +11 -11
  88. package/dist/src/urbit/base-url.js.map +1 -1
  89. package/dist/src/urbit/channel-ops.js +25 -19
  90. package/dist/src/urbit/channel-ops.js.map +1 -1
  91. package/dist/src/urbit/context.js +8 -8
  92. package/dist/src/urbit/context.js.map +1 -1
  93. package/dist/src/urbit/errors.js +33 -7
  94. package/dist/src/urbit/errors.js.map +1 -1
  95. package/dist/src/urbit/fetch.js +3 -3
  96. package/dist/src/urbit/fetch.js.map +1 -1
  97. package/dist/src/urbit/http-poke.js +10 -10
  98. package/dist/src/urbit/http-poke.js.map +1 -1
  99. package/dist/src/urbit/send.js +27 -23
  100. package/dist/src/urbit/send.js.map +1 -1
  101. package/dist/src/urbit/sse-client.js +45 -41
  102. package/dist/src/urbit/sse-client.js.map +1 -1
  103. package/dist/src/urbit/story.js +31 -30
  104. package/dist/src/urbit/story.js.map +1 -1
  105. package/dist/src/urbit/upload.js +8 -8
  106. package/dist/src/urbit/upload.js.map +1 -1
  107. package/dist/src/version.generated.js +2 -1
  108. package/dist/src/version.generated.js.map +1 -1
  109. package/dist/src/version.js +134 -0
  110. package/dist/src/version.js.map +1 -0
  111. package/openclaw.plugin.json +37 -0
  112. package/package.json +9 -15
@@ -1,10 +1,10 @@
1
- import { DEFAULT_ACCOUNT_ID, formatDocsLink, normalizeAccountId, patchScopedAccountConfig, prepareScopedSetupConfig, } from "openclaw/plugin-sdk/setup";
2
- import { buildTlonAccountFields } from "./account-fields.js";
3
- import { normalizeShip } from "./targets.js";
4
- import { listTlonAccountIds, resolveTlonAccount } from "./types.js";
5
- import { validateUrbitBaseUrl } from "./urbit/base-url.js";
1
+ import { DEFAULT_ACCOUNT_ID, formatDocsLink, normalizeAccountId, patchScopedAccountConfig, prepareScopedSetupConfig, } from 'openclaw/plugin-sdk/setup';
2
+ import { buildTlonAccountFields } from './account-fields.js';
3
+ import { normalizeShip } from './targets.js';
4
+ import { listTlonAccountIds, resolveTlonAccount, } from './types.js';
5
+ import { validateUrbitBaseUrl } from './urbit/base-url.js';
6
6
  function tlonChannelId() {
7
- return "tlon";
7
+ return 'tlon';
8
8
  }
9
9
  function isConfigured(account) {
10
10
  return Boolean(account.ship && account.url && account.code);
@@ -13,33 +13,33 @@ export function createTlonSetupWizardBase(params) {
13
13
  return {
14
14
  channel: tlonChannelId(),
15
15
  status: {
16
- configuredLabel: "configured",
17
- unconfiguredLabel: "needs setup",
18
- configuredHint: "configured",
19
- unconfiguredHint: "urbit messenger",
16
+ configuredLabel: 'configured',
17
+ unconfiguredLabel: 'needs setup',
18
+ configuredHint: 'configured',
19
+ unconfiguredHint: 'urbit messenger',
20
20
  configuredScore: 1,
21
21
  unconfiguredScore: 4,
22
22
  resolveConfigured: ({ cfg }) => params.resolveConfigured({ cfg }),
23
23
  resolveStatusLines: ({ cfg, configured }) => params.resolveStatusLines?.({ cfg, configured }) ?? [],
24
24
  },
25
25
  introNote: {
26
- title: "Tlon setup",
26
+ title: 'Tlon setup',
27
27
  lines: [
28
- "You need your Urbit ship URL and login code.",
29
- "Example URL: https://your-ship-host",
30
- "Example ship: ~sampel-palnet",
31
- "If your ship URL is on a private network (LAN/localhost), you must explicitly allow it during setup.",
32
- `Docs: ${formatDocsLink("/channels/tlon", "channels/tlon")}`,
28
+ 'You need your Urbit ship URL and login code.',
29
+ 'Example URL: https://your-ship-host',
30
+ 'Example ship: ~sampel-palnet',
31
+ 'If your ship URL is on a private network (LAN/localhost), you must explicitly allow it during setup.',
32
+ `Docs: ${formatDocsLink('/channels/tlon', 'channels/tlon')}`,
33
33
  ],
34
34
  },
35
35
  credentials: [],
36
36
  textInputs: [
37
37
  {
38
- inputKey: "ship",
39
- message: "Ship name",
40
- placeholder: "~sampel-palnet",
38
+ inputKey: 'ship',
39
+ message: 'Ship name',
40
+ placeholder: '~sampel-palnet',
41
41
  currentValue: ({ cfg, accountId }) => resolveTlonAccount(cfg, accountId).ship ?? undefined,
42
- validate: ({ value }) => (String(value ?? "").trim() ? undefined : "Required"),
42
+ validate: ({ value }) => String(value ?? '').trim() ? undefined : 'Required',
43
43
  normalizeValue: ({ value }) => normalizeShip(String(value).trim()),
44
44
  applySet: async ({ cfg, accountId, value }) => applyTlonSetupConfig({
45
45
  cfg,
@@ -48,12 +48,12 @@ export function createTlonSetupWizardBase(params) {
48
48
  }),
49
49
  },
50
50
  {
51
- inputKey: "url",
52
- message: "Ship URL",
53
- placeholder: "https://your-ship-host",
51
+ inputKey: 'url',
52
+ message: 'Ship URL',
53
+ placeholder: 'https://your-ship-host',
54
54
  currentValue: ({ cfg, accountId }) => resolveTlonAccount(cfg, accountId).url ?? undefined,
55
55
  validate: ({ value }) => {
56
- const next = validateUrbitBaseUrl(String(value ?? ""));
56
+ const next = validateUrbitBaseUrl(String(value ?? ''));
57
57
  if (!next.ok) {
58
58
  return next.error;
59
59
  }
@@ -67,11 +67,11 @@ export function createTlonSetupWizardBase(params) {
67
67
  }),
68
68
  },
69
69
  {
70
- inputKey: "code",
71
- message: "Login code",
72
- placeholder: "lidlut-tabwed-pillex-ridrup",
70
+ inputKey: 'code',
71
+ message: 'Login code',
72
+ placeholder: 'lidlut-tabwed-pillex-ridrup',
73
73
  currentValue: ({ cfg, accountId }) => resolveTlonAccount(cfg, accountId).code ?? undefined,
74
- validate: ({ value }) => (String(value ?? "").trim() ? undefined : "Required"),
74
+ validate: ({ value }) => String(value ?? '').trim() ? undefined : 'Required',
75
75
  normalizeValue: ({ value }) => String(value).trim(),
76
76
  applySet: async ({ cfg, accountId, value }) => applyTlonSetupConfig({
77
77
  cfg,
@@ -91,7 +91,7 @@ export async function resolveTlonSetupConfigured(cfg) {
91
91
  }
92
92
  export async function resolveTlonSetupStatusLines(cfg) {
93
93
  const configured = await resolveTlonSetupConfigured(cfg);
94
- return [`Tlon: ${configured ? "configured" : "needs setup"}`];
94
+ return [`Tlon: ${configured ? 'configured' : 'needs setup'}`];
95
95
  }
96
96
  export function applyTlonSetupConfig(params) {
97
97
  const { cfg, accountId, input } = params;
@@ -145,13 +145,13 @@ export const tlonSetupAdapter = {
145
145
  const url = setupInput.url?.trim() || resolved.url;
146
146
  const code = setupInput.code?.trim() || resolved.code;
147
147
  if (!ship) {
148
- return "Tlon requires --ship.";
148
+ return 'Tlon requires --ship.';
149
149
  }
150
150
  if (!url) {
151
- return "Tlon requires --url.";
151
+ return 'Tlon requires --url.';
152
152
  }
153
153
  if (!code) {
154
- return "Tlon requires --code.";
154
+ return 'Tlon requires --code.';
155
155
  }
156
156
  return null;
157
157
  },
@@ -1 +1 @@
1
- {"version":3,"file":"setup-core.js","sourceRoot":"","sources":["../../src/setup-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-core.js","sourceRoot":"","sources":["../../src/setup-core.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,32 @@
1
- import { applyTlonSetupConfig, createTlonSetupWizardBase, resolveTlonSetupConfigured, resolveTlonSetupStatusLines, } from "./setup-core.js";
2
- import { normalizeShip } from "./targets.js";
3
- import { resolveTlonAccount } from "./types.js";
4
- import { isBlockedUrbitHostname, validateUrbitBaseUrl } from "./urbit/base-url.js";
1
+ import { applyTlonSetupConfig, createTlonSetupWizardBase, resolveTlonSetupConfigured, resolveTlonSetupStatusLines, } from './setup-core.js';
2
+ import { normalizeShip } from './targets.js';
3
+ import { resolveTlonAccount, } from './types.js';
4
+ import { isBlockedUrbitHostname, validateUrbitBaseUrl, } from './urbit/base-url.js';
5
5
  function parseList(value) {
6
6
  return value
7
7
  .split(/[\n,;]+/g)
8
8
  .map((entry) => entry.trim())
9
9
  .filter(Boolean);
10
10
  }
11
- export { tlonSetupAdapter } from "./setup-core.js";
11
+ export { tlonSetupAdapter } from './setup-core.js';
12
12
  export const tlonSetupWizard = createTlonSetupWizardBase({
13
13
  resolveConfigured: async ({ cfg }) => await resolveTlonSetupConfigured(cfg),
14
14
  resolveStatusLines: async ({ cfg }) => await resolveTlonSetupStatusLines(cfg),
15
15
  finalize: async ({ cfg, accountId, prompter }) => {
16
16
  let next = cfg;
17
17
  const resolved = resolveTlonAccount(next, accountId);
18
- const validatedUrl = validateUrbitBaseUrl(resolved.url ?? "");
18
+ const validatedUrl = validateUrbitBaseUrl(resolved.url ?? '');
19
19
  if (!validatedUrl.ok) {
20
20
  throw new Error(`Invalid URL: ${validatedUrl.error}`);
21
21
  }
22
22
  let allowPrivateNetwork = resolved.allowPrivateNetwork ?? false;
23
23
  if (isBlockedUrbitHostname(validatedUrl.hostname)) {
24
24
  allowPrivateNetwork = await prompter.confirm({
25
- message: "Ship URL looks like a private/internal host. Allow private network access? (SSRF risk)",
25
+ message: 'Ship URL looks like a private/internal host. Allow private network access? (SSRF risk)',
26
26
  initialValue: allowPrivateNetwork,
27
27
  });
28
28
  if (!allowPrivateNetwork) {
29
- throw new Error("Refusing private/internal Ship URL without explicit approval");
29
+ throw new Error('Refusing private/internal Ship URL without explicit approval');
30
30
  }
31
31
  }
32
32
  next = applyTlonSetupConfig({
@@ -36,42 +36,42 @@ export const tlonSetupWizard = createTlonSetupWizardBase({
36
36
  });
37
37
  const currentGroups = resolved.groupChannels;
38
38
  const wantsGroupChannels = await prompter.confirm({
39
- message: "Add group channels manually? (optional)",
39
+ message: 'Add group channels manually? (optional)',
40
40
  initialValue: currentGroups.length > 0,
41
41
  });
42
42
  if (wantsGroupChannels) {
43
43
  const entry = await prompter.text({
44
- message: "Group channels (comma-separated)",
45
- placeholder: "chat/~host-ship/general, chat/~host-ship/support",
46
- initialValue: currentGroups.join(", ") || undefined,
44
+ message: 'Group channels (comma-separated)',
45
+ placeholder: 'chat/~host-ship/general, chat/~host-ship/support',
46
+ initialValue: currentGroups.join(', ') || undefined,
47
47
  });
48
48
  next = applyTlonSetupConfig({
49
49
  cfg: next,
50
50
  accountId,
51
- input: { groupChannels: parseList(String(entry ?? "")) },
51
+ input: { groupChannels: parseList(String(entry ?? '')) },
52
52
  });
53
53
  }
54
54
  const currentAllowlist = resolved.dmAllowlist;
55
55
  const wantsAllowlist = await prompter.confirm({
56
- message: "Restrict DMs with an allowlist?",
56
+ message: 'Restrict DMs with an allowlist?',
57
57
  initialValue: currentAllowlist.length > 0,
58
58
  });
59
59
  if (wantsAllowlist) {
60
60
  const entry = await prompter.text({
61
- message: "DM allowlist (comma-separated ship names)",
62
- placeholder: "~zod, ~nec",
63
- initialValue: currentAllowlist.join(", ") || undefined,
61
+ message: 'DM allowlist (comma-separated ship names)',
62
+ placeholder: '~zod, ~nec',
63
+ initialValue: currentAllowlist.join(', ') || undefined,
64
64
  });
65
65
  next = applyTlonSetupConfig({
66
66
  cfg: next,
67
67
  accountId,
68
68
  input: {
69
- dmAllowlist: parseList(String(entry ?? "")).map((ship) => normalizeShip(ship)),
69
+ dmAllowlist: parseList(String(entry ?? '')).map((ship) => normalizeShip(ship)),
70
70
  },
71
71
  });
72
72
  }
73
73
  const autoDiscoverChannels = await prompter.confirm({
74
- message: "Enable auto-discovery of group channels?",
74
+ message: 'Enable auto-discovery of group channels?',
75
75
  initialValue: resolved.autoDiscoverChannels ?? true,
76
76
  });
77
77
  next = applyTlonSetupConfig({
@@ -1 +1 @@
1
- {"version":3,"file":"setup-surface.js","sourceRoot":"","sources":["../../src/setup-surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-surface.js","sourceRoot":"","sources":["../../src/setup-surface.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAGL,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,KAAK,CAAC,UAAU,CAAC;SACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;IACvD,iBAAiB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,0BAA0B,CAAC,GAAG,CAAC;IAC3E,kBAAkB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,CAAC;IAC7E,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/C,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,IAAI,KAAK,CAAC;QAChE,IAAI,sBAAsB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,mBAAmB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBAC3C,OAAO,EACL,wFAAwF;gBAC1F,YAAY,EAAE,mBAAmB;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,GAAG,oBAAoB,CAAC;YAC1B,GAAG,EAAE,IAAI;YACT,SAAS;YACT,KAAK,EAAE,EAAE,mBAAmB,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC7C,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,yCAAyC;YAClD,YAAY,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,kDAAkD;gBAC/D,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;aACpD,CAAC,CAAC;YACH,IAAI,GAAG,oBAAoB,CAAC;gBAC1B,GAAG,EAAE,IAAI;gBACT,SAAS;gBACT,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE;aACzD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC9C,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC5C,OAAO,EAAE,iCAAiC;YAC1C,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,2CAA2C;gBACpD,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;aACvD,CAAC,CAAC;YACH,IAAI,GAAG,oBAAoB,CAAC;gBAC1B,GAAG,EAAE,IAAI;gBACT,SAAS;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvD,aAAa,CAAC,IAAI,CAAC,CACpB;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,oBAAoB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAClD,OAAO,EAAE,0CAA0C;YACnD,YAAY,EAAE,QAAQ,CAAC,oBAAoB,IAAI,IAAI;SACpD,CAAC,CAAC;QACH,IAAI,GAAG,oBAAoB,CAAC;YAC1B,GAAG,EAAE,IAAI;YACT,SAAS;YACT,KAAK,EAAE,EAAE,oBAAoB,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Cross-context shared state for module-level mutables that need to survive
3
+ * the host's plugin module isolation.
4
+ *
5
+ * OpenClaw (>=2026.4.27) loads the extension entry and lazy-imported runtime
6
+ * modules through separate module-loader contexts. Plain module-level
7
+ * singletons (`const X = new Map()`, `let X = null`) therefore live twice —
8
+ * once per context — so writes from the runtime side aren't visible from the
9
+ * extension side and vice versa.
10
+ *
11
+ * These helpers route state through a `globalThis` registry keyed by
12
+ * `Symbol.for(...)`, which is shared across every module instance in the
13
+ * process. Pattern mirrors `openclaw/plugin-sdk/runtime-store`.
14
+ */
15
+ const REGISTRY_KEY = Symbol.for('@tloncorp/openclaw.shared-state');
16
+ function getRegistry() {
17
+ const host = globalThis;
18
+ let registry = host[REGISTRY_KEY];
19
+ if (!registry) {
20
+ registry = new Map();
21
+ host[REGISTRY_KEY] = registry;
22
+ }
23
+ return registry;
24
+ }
25
+ /** A Map shared across plugin module contexts under the given slot id. */
26
+ export function sharedMap(slot) {
27
+ const registry = getRegistry();
28
+ let m = registry.get(slot);
29
+ if (!m) {
30
+ m = new Map();
31
+ registry.set(slot, m);
32
+ }
33
+ return m;
34
+ }
35
+ /** A single-value slot shared across plugin module contexts. */
36
+ export function sharedSlot(slot) {
37
+ const registry = getRegistry();
38
+ if (!registry.has(slot)) {
39
+ registry.set(slot, null);
40
+ }
41
+ return {
42
+ get: () => registry.get(slot),
43
+ set: (value) => registry.set(slot, value),
44
+ };
45
+ }
46
+ //# sourceMappingURL=shared-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-state.js","sourceRoot":"","sources":["../../src/shared-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAInE,SAAS,WAAW;IAClB,MAAM,IAAI,GAAG,UAAwC,CAAC;IACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAyB,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAO,IAAY;IAC1C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAA0B,CAAC;IACpD,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,GAAG,EAAQ,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAI,IAAY;IAIxC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAa;QACzC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -1,11 +1,18 @@
1
1
  const SHIP_RE = /^~?[a-z-]+$/i;
2
2
  const NEST_RE = /^(chat|heap|diary)\/([^/]+)\/([^/]+)$/i;
3
+ /**
4
+ * Normalize a ship name to canonical form: lowercase with a leading `~`.
5
+ * Urbit @p phonemes are inherently lowercase — different case can only mean
6
+ * the input was wrong, not that it refers to a different ship. Lowercasing
7
+ * here lets every caller compare ships by exact string equality without
8
+ * worrying about case variants in user input or stored values.
9
+ */
3
10
  export function normalizeShip(raw) {
4
- const trimmed = raw.trim();
11
+ const trimmed = raw.trim().toLowerCase();
5
12
  if (!trimmed) {
6
13
  return trimmed;
7
14
  }
8
- return trimmed.startsWith("~") ? trimmed : `~${trimmed}`;
15
+ return trimmed.startsWith('~') ? trimmed : `~${trimmed}`;
9
16
  }
10
17
  export function parseNest(raw) {
11
18
  const match = NEST_RE.exec(raw.trim());
@@ -47,11 +54,11 @@ export function parseTlonTarget(raw) {
47
54
  if (!trimmed) {
48
55
  return null;
49
56
  }
50
- const withoutPrefix = trimmed.replace(/^tlon:/i, "");
57
+ const withoutPrefix = trimmed.replace(/^tlon:/i, '');
51
58
  // DM targets: dm/~ship or dm:~ship
52
59
  const dmPrefix = withoutPrefix.match(/^dm[/:](.+)$/i);
53
60
  if (dmPrefix) {
54
- return { kind: "dm", ship: normalizeShip(dmPrefix[1]) };
61
+ return { kind: 'dm', ship: normalizeShip(dmPrefix[1]) };
55
62
  }
56
63
  // Group/room prefix: group:chat/~host/channel or room:~host/channel
57
64
  const groupPrefix = withoutPrefix.match(/^(group|room)[/:](.+)$/i);
@@ -60,19 +67,19 @@ export function parseTlonTarget(raw) {
60
67
  const parsedNest = parseNest(groupTarget);
61
68
  if (parsedNest) {
62
69
  return {
63
- kind: "channel",
70
+ kind: 'channel',
64
71
  nest: `${parsedNest.nestPrefix}/${parsedNest.hostShip}/${parsedNest.channelName}`,
65
72
  hostShip: parsedNest.hostShip,
66
73
  channelName: parsedNest.channelName,
67
74
  };
68
75
  }
69
76
  // Legacy format: group:~host/channel (defaults to chat)
70
- const parts = groupTarget.split("/");
77
+ const parts = groupTarget.split('/');
71
78
  if (parts.length === 2) {
72
79
  const hostShip = normalizeShip(parts[0]);
73
80
  const channelName = parts[1];
74
81
  return {
75
- kind: "channel",
82
+ kind: 'channel',
76
83
  nest: `chat/${hostShip}/${channelName}`,
77
84
  hostShip,
78
85
  channelName,
@@ -84,7 +91,7 @@ export function parseTlonTarget(raw) {
84
91
  const parsedNest = parseNest(withoutPrefix);
85
92
  if (parsedNest) {
86
93
  return {
87
- kind: "channel",
94
+ kind: 'channel',
88
95
  nest: `${parsedNest.nestPrefix}/${parsedNest.hostShip}/${parsedNest.channelName}`,
89
96
  hostShip: parsedNest.hostShip,
90
97
  channelName: parsedNest.channelName,
@@ -92,11 +99,11 @@ export function parseTlonTarget(raw) {
92
99
  }
93
100
  // Bare ship name: treat as DM
94
101
  if (SHIP_RE.test(withoutPrefix)) {
95
- return { kind: "dm", ship: normalizeShip(withoutPrefix) };
102
+ return { kind: 'dm', ship: normalizeShip(withoutPrefix) };
96
103
  }
97
104
  return null;
98
105
  }
99
106
  export function formatTargetHint() {
100
- return "dm/~ship | ~ship | chat/~host/channel | heap/~host/channel | diary/~host/channel";
107
+ return 'dm/~ship | ~ship | chat/~host/channel | heap/~host/channel | diary/~host/channel';
101
108
  }
102
109
  //# sourceMappingURL=targets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/targets.ts"],"names":[],"mappings":"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"}