@tloncorp/openclaw 0.4.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -141
- package/dist/index.js +147 -138
- 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 +51 -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/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 +2771 -2483
- 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/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/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 +17 -14
- 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/openclaw.plugin.json +37 -0
- package/package.json +35 -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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"}
|
package/dist/src/telemetry.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { PostHog } from
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
1
|
+
import { PostHog } from 'posthog-node';
|
|
2
|
+
import { sharedMap } from './shared-state.js';
|
|
3
|
+
const TLON_TELEMETRY_EVENT_NAME = 'TlonBot Reply Handled';
|
|
4
|
+
const TLON_HEARTBEAT_NUDGE_EVENT = 'TlonBot Heartbeat Nudge Sent';
|
|
5
|
+
const TLON_HEARTBEAT_REENGAGED_EVENT = 'TlonBot Heartbeat Nudge Reengaged';
|
|
6
|
+
const TLON_TELEMETRY_LOG_SOURCE = 'openclawPlugin';
|
|
6
7
|
const TOOL_TRACE_TTL_MS = 60 * 60 * 1000;
|
|
7
8
|
const MAX_TOOL_CALLS_PER_SESSION = 200;
|
|
8
|
-
const toolCallsBySession =
|
|
9
|
+
const toolCallsBySession = sharedMap('telemetry.toolCallsBySession');
|
|
9
10
|
function cleanupToolCalls(now = Date.now()) {
|
|
10
11
|
for (const [sessionKey, trace] of toolCallsBySession) {
|
|
11
12
|
if (now - trace.updatedAt > TOOL_TRACE_TTL_MS) {
|
|
@@ -28,7 +29,7 @@ export function recordToolCall(params) {
|
|
|
28
29
|
trace.updatedAt = now;
|
|
29
30
|
trace.calls.push({
|
|
30
31
|
toolName: params.toolName,
|
|
31
|
-
durationMs: typeof params.durationMs ===
|
|
32
|
+
durationMs: typeof params.durationMs === 'number' ? params.durationMs : null,
|
|
32
33
|
error: params.error ?? null,
|
|
33
34
|
recordedAt: now,
|
|
34
35
|
});
|
|
@@ -60,9 +61,9 @@ function collectToolUsageSince(sessionKey, cursor) {
|
|
|
60
61
|
}
|
|
61
62
|
function resolveReplyOutcome(params) {
|
|
62
63
|
if (params.deliveredMessageCount > 0) {
|
|
63
|
-
return
|
|
64
|
+
return 'responded';
|
|
64
65
|
}
|
|
65
|
-
return params.dispatchError ?
|
|
66
|
+
return params.dispatchError ? 'error' : 'no_reply';
|
|
66
67
|
}
|
|
67
68
|
class PostHogTlonTelemetry {
|
|
68
69
|
client;
|
|
@@ -114,7 +115,7 @@ class PostHogTlonTelemetry {
|
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
captureReplyOutcome(event) {
|
|
117
|
-
const ownerShip = event.ownerShip ??
|
|
118
|
+
const ownerShip = event.ownerShip ?? '';
|
|
118
119
|
if (!this.ensureIdentified(ownerShip, event.botShip)) {
|
|
119
120
|
return;
|
|
120
121
|
}
|
|
@@ -158,7 +159,7 @@ class PostHogTlonTelemetry {
|
|
|
158
159
|
if (!ownerShip) {
|
|
159
160
|
if (!this.missingOwnerWarningLogged) {
|
|
160
161
|
this.missingOwnerWarningLogged = true;
|
|
161
|
-
this.runtime?.log?.(
|
|
162
|
+
this.runtime?.log?.('[tlon] Telemetry is enabled but ownerShip is not configured; skipping telemetry events');
|
|
162
163
|
}
|
|
163
164
|
return false;
|
|
164
165
|
}
|
|
@@ -186,12 +187,14 @@ class PostHogTlonTelemetry {
|
|
|
186
187
|
logSource: TLON_TELEMETRY_LOG_SOURCE,
|
|
187
188
|
botShip: event.botShip,
|
|
188
189
|
ownerShip: event.ownerShip,
|
|
189
|
-
trigger:
|
|
190
|
+
trigger: 'heartbeat',
|
|
190
191
|
nudgeStage: event.nudgeStage,
|
|
191
192
|
nudgeTarget: event.nudgeTarget,
|
|
192
193
|
channel: event.channel,
|
|
193
194
|
success: event.success,
|
|
194
195
|
accountId: event.accountId,
|
|
196
|
+
messageId: event.messageId,
|
|
197
|
+
nudgeSentAtMs: event.nudgeSentAtMs,
|
|
195
198
|
},
|
|
196
199
|
});
|
|
197
200
|
}
|
|
@@ -235,10 +238,10 @@ export function createTlonTelemetry(params) {
|
|
|
235
238
|
return null;
|
|
236
239
|
}
|
|
237
240
|
if (!params.config.apiKey) {
|
|
238
|
-
params.runtime?.log?.(
|
|
241
|
+
params.runtime?.log?.('[tlon] Telemetry is enabled but telemetry.apiKey is missing; telemetry disabled');
|
|
239
242
|
return null;
|
|
240
243
|
}
|
|
241
|
-
params.runtime?.log?.(`[tlon] Telemetry enabled${params.config.host ? ` (${params.config.host})` :
|
|
244
|
+
params.runtime?.log?.(`[tlon] Telemetry enabled${params.config.host ? ` (${params.config.host})` : ''}`);
|
|
242
245
|
return new PostHogTlonTelemetry({
|
|
243
246
|
apiKey: params.config.apiKey,
|
|
244
247
|
host: params.config.host,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/src/tlon-binary.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from
|
|
2
|
-
import { dirname, join } from
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
3
|
function findPluginPackageJsonPath(moduleDir, exists) {
|
|
4
|
-
return [
|
|
4
|
+
return ([
|
|
5
|
+
join(moduleDir, 'package.json'),
|
|
6
|
+
join(moduleDir, '..', 'package.json'),
|
|
7
|
+
].find(exists) ?? null);
|
|
5
8
|
}
|
|
6
9
|
function resolveSkillBinPath(resolveModule, readFile) {
|
|
7
10
|
try {
|
|
8
|
-
const skillPackageJsonPath = resolveModule(
|
|
11
|
+
const skillPackageJsonPath = resolveModule('@tloncorp/tlon-skill/package.json');
|
|
9
12
|
const skillPackageDir = dirname(skillPackageJsonPath);
|
|
10
|
-
const skillPackageJson = JSON.parse(readFile(skillPackageJsonPath,
|
|
11
|
-
const relativeBin = typeof skillPackageJson.bin ===
|
|
13
|
+
const skillPackageJson = JSON.parse(readFile(skillPackageJsonPath, 'utf-8'));
|
|
14
|
+
const relativeBin = typeof skillPackageJson.bin === 'string'
|
|
12
15
|
? skillPackageJson.bin
|
|
13
16
|
: skillPackageJson.bin?.tlon;
|
|
14
17
|
return relativeBin ? join(skillPackageDir, relativeBin) : null;
|
|
@@ -22,13 +25,18 @@ export function resolveTlonBinary(options) {
|
|
|
22
25
|
const readFile = options.readFile ?? readFileSync;
|
|
23
26
|
const log = options.log ?? console.log;
|
|
24
27
|
const pluginPackageJsonPath = findPluginPackageJsonPath(options.moduleDir, exists);
|
|
25
|
-
const pluginRoot = pluginPackageJsonPath
|
|
28
|
+
const pluginRoot = pluginPackageJsonPath
|
|
29
|
+
? dirname(pluginPackageJsonPath)
|
|
30
|
+
: options.moduleDir;
|
|
26
31
|
const candidates = [
|
|
27
|
-
[
|
|
28
|
-
["plugin node_modules .bin", join(pluginRoot, "node_modules", ".bin", "tlon")],
|
|
32
|
+
['skill package bin', resolveSkillBinPath(options.resolveModule, readFile)],
|
|
29
33
|
[
|
|
30
|
-
|
|
31
|
-
join(pluginRoot,
|
|
34
|
+
'plugin node_modules .bin',
|
|
35
|
+
join(pluginRoot, 'node_modules', '.bin', 'tlon'),
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
'plugin skill bin',
|
|
39
|
+
join(pluginRoot, 'node_modules', '@tloncorp', 'tlon-skill', 'bin', 'tlon.js'),
|
|
32
40
|
],
|
|
33
41
|
];
|
|
34
42
|
for (const [label, candidate] of candidates) {
|
|
@@ -41,6 +49,6 @@ export function resolveTlonBinary(options) {
|
|
|
41
49
|
}
|
|
42
50
|
}
|
|
43
51
|
log("[tlon] Falling back to PATH lookup for 'tlon'");
|
|
44
|
-
return
|
|
52
|
+
return 'tlon';
|
|
45
53
|
}
|
|
46
54
|
//# sourceMappingURL=tlon-binary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tlon-binary.js","sourceRoot":"","sources":["../../src/tlon-binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAW1C,SAAS,yBAAyB,
|
|
1
|
+
{"version":3,"file":"tlon-binary.js","sourceRoot":"","sources":["../../src/tlon-binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAW1C,SAAS,yBAAyB,CAChC,SAAiB,EACjB,MAAgB;IAEhB,OAAO,CACL;QACE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC;KACtC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAA8B,EAC9B,QAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,oBAAoB,GAAG,aAAa,CACxC,mCAAmC,CACpC,CAAC;QACF,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CACpB,CAAC;QACtB,MAAM,WAAW,GACf,OAAO,gBAAgB,CAAC,GAAG,KAAK,QAAQ;YACtC,CAAC,CAAC,gBAAgB,CAAC,GAAG;YACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;QAEjC,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAMjC;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,qBAAqB,GAAG,yBAAyB,CACrD,OAAO,CAAC,SAAS,EACjB,MAAM,CACP,CAAC;IACF,MAAM,UAAU,GAAG,qBAAqB;QACtC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAChC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACtB,MAAM,UAAU,GAAG;QACjB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC3E;YACE,0BAA0B;YAC1B,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC;SACjD;QACD;YACE,kBAAkB;YAClB,IAAI,CACF,UAAU,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,KAAK,EACL,SAAS,CACV;SACF;KACO,CAAC;IAEX,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,GAAG,CACD,uBAAuB,KAAK,QAAQ,SAAS,aAAa,MAAM,CAAC,SAAS,CAAC,EAAE,CAC9E,CAAC;QACF,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,+CAA+C,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|