@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.
- package/README.md +130 -141
- package/dist/index.js +703 -152
- package/dist/index.js.map +1 -1
- package/dist/setup-api.js +2 -2
- package/dist/setup-entry.js +2 -2
- package/dist/setup-entry.js.map +1 -1
- package/dist/src/account-fields.js +7 -3
- package/dist/src/account-fields.js.map +1 -1
- package/dist/src/actions.js +73 -52
- package/dist/src/actions.js.map +1 -1
- package/dist/src/channel.js +63 -39
- package/dist/src/channel.js.map +1 -1
- package/dist/src/channel.runtime.js +61 -32
- package/dist/src/channel.runtime.js.map +1 -1
- package/dist/src/config-schema.js +24 -4
- package/dist/src/config-schema.js.map +1 -1
- package/dist/src/diagnostic-subscriptions.js +49 -0
- package/dist/src/diagnostic-subscriptions.js.map +1 -0
- package/dist/src/effective-owner.js.map +1 -1
- package/dist/src/gateway-status.js +55 -7
- package/dist/src/gateway-status.js.map +1 -1
- package/dist/src/monitor/approval.js +71 -62
- package/dist/src/monitor/approval.js.map +1 -1
- package/dist/src/monitor/command-auth.js +7 -7
- package/dist/src/monitor/command-auth.js.map +1 -1
- package/dist/src/monitor/command-bridge.js +3 -2
- package/dist/src/monitor/command-bridge.js.map +1 -1
- package/dist/src/monitor/computing-presence.js +76 -12
- package/dist/src/monitor/computing-presence.js.map +1 -1
- package/dist/src/monitor/discovery.js +16 -9
- package/dist/src/monitor/discovery.js.map +1 -1
- package/dist/src/monitor/history.js +58 -26
- package/dist/src/monitor/history.js.map +1 -1
- package/dist/src/monitor/index.js +3018 -2496
- package/dist/src/monitor/index.js.map +1 -1
- package/dist/src/monitor/media.js +106 -78
- package/dist/src/monitor/media.js.map +1 -1
- package/dist/src/monitor/nudge-runner.js +36 -27
- package/dist/src/monitor/nudge-runner.js.map +1 -1
- package/dist/src/monitor/nudge-state.js +7 -11
- package/dist/src/monitor/nudge-state.js.map +1 -1
- package/dist/src/monitor/owner-reply-persistence.js +27 -26
- package/dist/src/monitor/owner-reply-persistence.js.map +1 -1
- package/dist/src/monitor/processed-messages.js.map +1 -1
- package/dist/src/monitor/session-routing.js +261 -0
- package/dist/src/monitor/session-routing.js.map +1 -0
- package/dist/src/monitor/settings-sync.js +1 -8
- package/dist/src/monitor/settings-sync.js.map +1 -1
- package/dist/src/monitor/utils.js +77 -71
- package/dist/src/monitor/utils.js.map +1 -1
- package/dist/src/nudge-decision.js +40 -43
- package/dist/src/nudge-decision.js.map +1 -1
- package/dist/src/nudge-messages.js +9 -9
- package/dist/src/nudge-scheduler.js.map +1 -1
- package/dist/src/owner-listen-command.js +38 -28
- package/dist/src/owner-listen-command.js.map +1 -1
- package/dist/src/pending-nudge.js.map +1 -1
- package/dist/src/runtime.js +10 -6
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/session-roles.js +2 -1
- package/dist/src/session-roles.js.map +1 -1
- package/dist/src/session-route.js +44 -0
- package/dist/src/session-route.js.map +1 -0
- package/dist/src/settings.js +233 -102
- package/dist/src/settings.js.map +1 -1
- package/dist/src/setup-core.js +32 -32
- package/dist/src/setup-core.js.map +1 -1
- package/dist/src/setup-surface.js +19 -19
- package/dist/src/setup-surface.js.map +1 -1
- package/dist/src/shared-state.js +46 -0
- package/dist/src/shared-state.js.map +1 -0
- package/dist/src/targets.js +17 -10
- package/dist/src/targets.js.map +1 -1
- package/dist/src/telemetry.js +764 -34
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/tlon-binary.js +20 -12
- package/dist/src/tlon-binary.js.map +1 -1
- package/dist/src/tlon-tool-guard.js +5 -5
- package/dist/src/tool-trace.js +17 -13
- package/dist/src/tool-trace.js.map +1 -1
- package/dist/src/types.js +30 -12
- package/dist/src/types.js.map +1 -1
- package/dist/src/urbit/api-client.js +16 -12
- package/dist/src/urbit/api-client.js.map +1 -1
- package/dist/src/urbit/auth.js +9 -9
- package/dist/src/urbit/auth.js.map +1 -1
- package/dist/src/urbit/base-url.js +11 -11
- package/dist/src/urbit/base-url.js.map +1 -1
- package/dist/src/urbit/channel-ops.js +25 -19
- package/dist/src/urbit/channel-ops.js.map +1 -1
- package/dist/src/urbit/context.js +8 -8
- package/dist/src/urbit/context.js.map +1 -1
- package/dist/src/urbit/errors.js +33 -7
- package/dist/src/urbit/errors.js.map +1 -1
- package/dist/src/urbit/fetch.js +3 -3
- package/dist/src/urbit/fetch.js.map +1 -1
- package/dist/src/urbit/http-poke.js +10 -10
- package/dist/src/urbit/http-poke.js.map +1 -1
- package/dist/src/urbit/send.js +27 -23
- package/dist/src/urbit/send.js.map +1 -1
- package/dist/src/urbit/sse-client.js +45 -41
- package/dist/src/urbit/sse-client.js.map +1 -1
- package/dist/src/urbit/story.js +31 -30
- package/dist/src/urbit/story.js.map +1 -1
- package/dist/src/urbit/upload.js +8 -8
- package/dist/src/urbit/upload.js.map +1 -1
- package/dist/src/version.generated.js +2 -1
- package/dist/src/version.generated.js.map +1 -1
- package/dist/src/version.js +134 -0
- package/dist/src/version.js.map +1 -0
- package/openclaw.plugin.json +37 -0
- package/package.json +9 -15
package/dist/src/setup-core.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DEFAULT_ACCOUNT_ID, formatDocsLink, normalizeAccountId, patchScopedAccountConfig, prepareScopedSetupConfig, } from
|
|
2
|
-
import { buildTlonAccountFields } from
|
|
3
|
-
import { normalizeShip } from
|
|
4
|
-
import { listTlonAccountIds, resolveTlonAccount } from
|
|
5
|
-
import { validateUrbitBaseUrl } from
|
|
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
|
|
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:
|
|
17
|
-
unconfiguredLabel:
|
|
18
|
-
configuredHint:
|
|
19
|
-
unconfiguredHint:
|
|
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:
|
|
26
|
+
title: 'Tlon setup',
|
|
27
27
|
lines: [
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
`Docs: ${formatDocsLink(
|
|
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:
|
|
39
|
-
message:
|
|
40
|
-
placeholder:
|
|
38
|
+
inputKey: 'ship',
|
|
39
|
+
message: 'Ship name',
|
|
40
|
+
placeholder: '~sampel-palnet',
|
|
41
41
|
currentValue: ({ cfg, accountId }) => resolveTlonAccount(cfg, accountId).ship ?? undefined,
|
|
42
|
-
validate: ({ value }) =>
|
|
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:
|
|
52
|
-
message:
|
|
53
|
-
placeholder:
|
|
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:
|
|
71
|
-
message:
|
|
72
|
-
placeholder:
|
|
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 }) =>
|
|
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 ?
|
|
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
|
|
148
|
+
return 'Tlon requires --ship.';
|
|
149
149
|
}
|
|
150
150
|
if (!url) {
|
|
151
|
-
return
|
|
151
|
+
return 'Tlon requires --url.';
|
|
152
152
|
}
|
|
153
153
|
if (!code) {
|
|
154
|
-
return
|
|
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":"AAAA,OAAO,
|
|
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
|
|
2
|
-
import { normalizeShip } from
|
|
3
|
-
import { resolveTlonAccount } from
|
|
4
|
-
import { isBlockedUrbitHostname, validateUrbitBaseUrl } from
|
|
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
|
|
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:
|
|
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(
|
|
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:
|
|
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:
|
|
45
|
-
placeholder:
|
|
46
|
-
initialValue: currentGroups.join(
|
|
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:
|
|
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:
|
|
62
|
-
placeholder:
|
|
63
|
-
initialValue: currentAllowlist.join(
|
|
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 ??
|
|
69
|
+
dmAllowlist: parseList(String(entry ?? '')).map((ship) => normalizeShip(ship)),
|
|
70
70
|
},
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
const autoDiscoverChannels = await prompter.confirm({
|
|
74
|
-
message:
|
|
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":"
|
|
1
|
+
{"version":3,"file":"setup-surface.js","sourceRoot":"","sources":["../../src/setup-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/src/targets.js
CHANGED
|
@@ -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(
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
102
|
+
return { kind: 'dm', ship: normalizeShip(withoutPrefix) };
|
|
96
103
|
}
|
|
97
104
|
return null;
|
|
98
105
|
}
|
|
99
106
|
export function formatTargetHint() {
|
|
100
|
-
return
|
|
107
|
+
return 'dm/~ship | ~ship | chat/~host/channel | heap/~host/channel | diary/~host/channel';
|
|
101
108
|
}
|
|
102
109
|
//# sourceMappingURL=targets.js.map
|
package/dist/src/targets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/targets.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,GAAG,cAAc,CAAC;AAC/B,MAAM,OAAO,GAAG,wCAAwC,CAAC;AAEzD,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/targets.ts"],"names":[],"mappings":"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"}
|