@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/channel.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { createRuntimeOutboundDelegates } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
const
|
|
1
|
+
import { describeAccountSnapshot } from 'openclaw/plugin-sdk/account-helpers';
|
|
2
|
+
import { createHybridChannelConfigAdapter } from 'openclaw/plugin-sdk/channel-config-helpers';
|
|
3
|
+
import { DEFAULT_ACCOUNT_ID, createChatChannelPlugin, } from 'openclaw/plugin-sdk/core';
|
|
4
|
+
import { createLazyRuntimeModule } from 'openclaw/plugin-sdk/lazy-runtime';
|
|
5
|
+
import { createRuntimeOutboundDelegates } from 'openclaw/plugin-sdk/outbound-runtime';
|
|
6
|
+
import { createLegacyPrivateNetworkDoctorContract } from 'openclaw/plugin-sdk/ssrf-runtime';
|
|
7
|
+
import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, } from 'openclaw/plugin-sdk/status-helpers';
|
|
8
|
+
import { tlonMessageActions } from './actions.js';
|
|
9
|
+
import { tlonChannelConfigSchema } from './config-schema.js';
|
|
10
|
+
import { resolveTlonOutboundSessionRoute } from './session-route.js';
|
|
11
|
+
import { createTlonSetupWizardBase, tlonSetupAdapter, } from './setup-core.js';
|
|
12
|
+
import { formatTargetHint, normalizeShip, parseTlonTarget } from './targets.js';
|
|
13
|
+
import { listTlonAccountIds, resolveTlonAccount } from './types.js';
|
|
14
|
+
const TLON_CHANNEL_ID = 'tlon';
|
|
15
|
+
const loadTlonChannelRuntime = createLazyRuntimeModule(() => import('./channel.runtime.js'));
|
|
15
16
|
const tlonSetupWizardProxy = createTlonSetupWizardBase({
|
|
16
17
|
resolveConfigured: async ({ cfg }) => await (await loadTlonChannelRuntime()).tlonSetupWizard.status.resolveConfigured({ cfg }),
|
|
17
18
|
resolveStatusLines: async ({ cfg, configured }) => (await (await loadTlonChannelRuntime()).tlonSetupWizard.status.resolveStatusLines?.({
|
|
@@ -20,12 +21,15 @@ const tlonSetupWizardProxy = createTlonSetupWizardBase({
|
|
|
20
21
|
})) ?? [],
|
|
21
22
|
finalize: async (params) => await (await loadTlonChannelRuntime()).tlonSetupWizard.finalize(params),
|
|
22
23
|
});
|
|
24
|
+
const tlonLegacyPrivateNetworkDoctor = createLegacyPrivateNetworkDoctorContract({
|
|
25
|
+
channelKey: TLON_CHANNEL_ID,
|
|
26
|
+
});
|
|
23
27
|
const tlonConfigAdapter = createHybridChannelConfigAdapter({
|
|
24
28
|
sectionKey: TLON_CHANNEL_ID,
|
|
25
29
|
listAccountIds: listTlonAccountIds,
|
|
26
30
|
resolveAccount: resolveTlonAccount,
|
|
27
31
|
defaultAccountId: () => DEFAULT_ACCOUNT_ID,
|
|
28
|
-
clearBaseFields: [
|
|
32
|
+
clearBaseFields: ['ship', 'code', 'url', 'name'],
|
|
29
33
|
preserveSectionOnDefaultDelete: true,
|
|
30
34
|
resolveAllowFrom: (account) => (account.ownerShip ? [account.ownerShip] : []),
|
|
31
35
|
formatAllowFrom: (allowFrom) => allowFrom.map((entry) => normalizeShip(String(entry))).filter(Boolean),
|
|
@@ -35,23 +39,23 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
35
39
|
id: TLON_CHANNEL_ID,
|
|
36
40
|
meta: {
|
|
37
41
|
id: TLON_CHANNEL_ID,
|
|
38
|
-
label:
|
|
39
|
-
selectionLabel:
|
|
40
|
-
docsPath:
|
|
41
|
-
docsLabel:
|
|
42
|
-
blurb:
|
|
43
|
-
aliases: [
|
|
42
|
+
label: 'Tlon',
|
|
43
|
+
selectionLabel: 'Tlon (Urbit)',
|
|
44
|
+
docsPath: '/channels/tlon',
|
|
45
|
+
docsLabel: 'tlon',
|
|
46
|
+
blurb: 'Decentralized messaging on Urbit',
|
|
47
|
+
aliases: ['urbit'],
|
|
44
48
|
order: 90,
|
|
45
49
|
},
|
|
46
50
|
capabilities: {
|
|
47
|
-
chatTypes: [
|
|
51
|
+
chatTypes: ['direct', 'group', 'thread'],
|
|
48
52
|
media: true,
|
|
49
53
|
reply: true,
|
|
50
54
|
threads: true,
|
|
51
55
|
reactions: true,
|
|
52
56
|
},
|
|
53
57
|
threading: {
|
|
54
|
-
resolveReplyToMode: () =>
|
|
58
|
+
resolveReplyToMode: () => 'all',
|
|
55
59
|
buildToolContext: ({ context, hasRepliedRef }) => {
|
|
56
60
|
const threadId = context.MessageThreadId ?? context.ReplyToId;
|
|
57
61
|
return {
|
|
@@ -63,7 +67,7 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
63
67
|
},
|
|
64
68
|
setup: tlonSetupAdapter,
|
|
65
69
|
setupWizard: tlonSetupWizardProxy,
|
|
66
|
-
reload: { configPrefixes: [
|
|
70
|
+
reload: { configPrefixes: ['channels.tlon'] },
|
|
67
71
|
configSchema: tlonChannelConfigSchema,
|
|
68
72
|
config: {
|
|
69
73
|
...tlonConfigAdapter,
|
|
@@ -78,34 +82,45 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
78
82
|
}),
|
|
79
83
|
},
|
|
80
84
|
messaging: {
|
|
85
|
+
targetPrefixes: ['tlon'],
|
|
81
86
|
normalizeTarget: (target) => {
|
|
82
87
|
const parsed = parseTlonTarget(target);
|
|
83
88
|
if (!parsed) {
|
|
84
89
|
return target.trim();
|
|
85
90
|
}
|
|
86
|
-
if (parsed.kind ===
|
|
91
|
+
if (parsed.kind === 'dm') {
|
|
87
92
|
return parsed.ship;
|
|
88
93
|
}
|
|
89
94
|
return parsed.nest;
|
|
90
95
|
},
|
|
96
|
+
parseExplicitTarget: ({ raw }) => {
|
|
97
|
+
const parsed = parseTlonTarget(raw);
|
|
98
|
+
if (!parsed) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return parsed.kind === 'dm'
|
|
102
|
+
? { to: parsed.ship, chatType: 'direct' }
|
|
103
|
+
: { to: parsed.nest, chatType: 'group' };
|
|
104
|
+
},
|
|
91
105
|
targetResolver: {
|
|
92
106
|
looksLikeId: (target) => Boolean(parseTlonTarget(target)),
|
|
93
107
|
hint: formatTargetHint(),
|
|
94
108
|
},
|
|
109
|
+
resolveOutboundSessionRoute: (params) => resolveTlonOutboundSessionRoute(params),
|
|
95
110
|
},
|
|
96
111
|
actions: tlonMessageActions,
|
|
97
112
|
agentPrompt: {
|
|
98
113
|
messageToolHints: ({ cfg, accountId }) => {
|
|
99
114
|
const account = resolveTlonAccount(cfg, accountId ?? undefined);
|
|
100
115
|
const hints = [];
|
|
101
|
-
hints.push(
|
|
102
|
-
const level = account.reactionLevel ??
|
|
103
|
-
if (level !==
|
|
104
|
-
if (level ===
|
|
105
|
-
hints.push(
|
|
116
|
+
hints.push('', 'Tlon gallery channels (heap/~host/name) are for collecting images, links, and media.', '- To post to a gallery: use action=send, to=heap/~host/name, message=<text or URL>', '- For image posts, include media=<imageUrl> with an optional message=<caption>', '- To react to a gallery comment: use action=react, to=heap/~host/name, messageId=<commentId>, parentId=<postId>, emoji=<emoji>');
|
|
117
|
+
const level = account.reactionLevel ?? 'minimal';
|
|
118
|
+
if (level !== 'off' && level !== 'ack') {
|
|
119
|
+
if (level === 'extensive') {
|
|
120
|
+
hints.push('', 'Reactions are enabled for Tlon in EXTENSIVE mode.', 'Feel free to react liberally:', '- Acknowledge messages with appropriate emojis', '- Express sentiment and personality through reactions', '- React to interesting content, humor, or notable events', '- Use reactions to confirm understanding or agreement', '- Use action=react with emoji, messageId, and target (channel nest or DM ship)', 'Guideline: react whenever it feels natural.');
|
|
106
121
|
}
|
|
107
122
|
else {
|
|
108
|
-
hints.push(
|
|
123
|
+
hints.push('', 'Reactions are enabled for Tlon in MINIMAL mode.', 'React ONLY when truly relevant:', '- Acknowledge important user requests or confirmations', '- Express genuine sentiment (humor, appreciation) sparingly', '- Avoid reacting to routine messages or your own replies', '- Use action=react with emoji, messageId, and target (channel nest or DM ship)', 'Guideline: at most 1 reaction per 5-10 exchanges.');
|
|
109
124
|
}
|
|
110
125
|
}
|
|
111
126
|
return hints;
|
|
@@ -120,8 +135,8 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
120
135
|
{
|
|
121
136
|
channel: TLON_CHANNEL_ID,
|
|
122
137
|
accountId: account.accountId,
|
|
123
|
-
kind:
|
|
124
|
-
message:
|
|
138
|
+
kind: 'config',
|
|
139
|
+
message: 'Account not configured (missing ship, code, or url)',
|
|
125
140
|
},
|
|
126
141
|
];
|
|
127
142
|
}
|
|
@@ -137,8 +152,11 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
137
152
|
};
|
|
138
153
|
},
|
|
139
154
|
probeAccount: async ({ account }) => {
|
|
140
|
-
if (!account.configured ||
|
|
141
|
-
|
|
155
|
+
if (!account.configured ||
|
|
156
|
+
!account.ship ||
|
|
157
|
+
!account.url ||
|
|
158
|
+
!account.code) {
|
|
159
|
+
return { ok: false, error: 'Not configured' };
|
|
142
160
|
}
|
|
143
161
|
return await (await loadTlonChannelRuntime()).probeTlonAccount(account);
|
|
144
162
|
},
|
|
@@ -156,19 +174,23 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
156
174
|
gateway: {
|
|
157
175
|
startAccount: async (ctx) => await (await loadTlonChannelRuntime()).startTlonGatewayAccount(ctx),
|
|
158
176
|
},
|
|
177
|
+
doctor: {
|
|
178
|
+
legacyConfigRules: tlonLegacyPrivateNetworkDoctor.legacyConfigRules,
|
|
179
|
+
normalizeCompatibilityConfig: tlonLegacyPrivateNetworkDoctor.normalizeCompatibilityConfig,
|
|
180
|
+
},
|
|
159
181
|
},
|
|
160
182
|
outbound: {
|
|
161
|
-
deliveryMode:
|
|
183
|
+
deliveryMode: 'direct',
|
|
162
184
|
textChunkLimit: 10000,
|
|
163
185
|
resolveTarget: ({ to }) => {
|
|
164
|
-
const parsed = parseTlonTarget(to ??
|
|
186
|
+
const parsed = parseTlonTarget(to ?? '');
|
|
165
187
|
if (!parsed) {
|
|
166
188
|
return {
|
|
167
189
|
ok: false,
|
|
168
190
|
error: new Error(`Invalid Tlon target. Use ${formatTargetHint()}`),
|
|
169
191
|
};
|
|
170
192
|
}
|
|
171
|
-
if (parsed.kind ===
|
|
193
|
+
if (parsed.kind === 'dm') {
|
|
172
194
|
return { ok: true, to: parsed.ship };
|
|
173
195
|
}
|
|
174
196
|
return { ok: true, to: parsed.nest };
|
|
@@ -176,7 +198,9 @@ export const tlonPlugin = createChatChannelPlugin({
|
|
|
176
198
|
...createRuntimeOutboundDelegates({
|
|
177
199
|
getRuntime: loadTlonChannelRuntime,
|
|
178
200
|
sendText: { resolve: (runtime) => runtime.tlonRuntimeOutbound.sendText },
|
|
179
|
-
sendMedia: {
|
|
201
|
+
sendMedia: {
|
|
202
|
+
resolve: (runtime) => runtime.tlonRuntimeOutbound.sendMedia,
|
|
203
|
+
},
|
|
180
204
|
}),
|
|
181
205
|
},
|
|
182
206
|
});
|
package/dist/src/channel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { withAuthenticatedTlonApi } from
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { markdownToStory } from
|
|
12
|
-
import {
|
|
1
|
+
import { scry } from '@tloncorp/api';
|
|
2
|
+
import { monitorTlonProvider } from './monitor/index.js';
|
|
3
|
+
import { tlonSetupWizard } from './setup-surface.js';
|
|
4
|
+
import { formatTargetHint, normalizeShip, parseTlonTarget } from './targets.js';
|
|
5
|
+
import { resolveTlonAccount } from './types.js';
|
|
6
|
+
import { withAuthenticatedTlonApi } from './urbit/api-client.js';
|
|
7
|
+
import { authenticate } from './urbit/auth.js';
|
|
8
|
+
import { ssrfPolicyFromAllowPrivateNetwork } from './urbit/context.js';
|
|
9
|
+
import { urbitFetch } from './urbit/fetch.js';
|
|
10
|
+
import { buildMediaStory, sendChannelPost, sendDm, sendDmWithStory, } from './urbit/send.js';
|
|
11
|
+
import { markdownToStory } from './urbit/story.js';
|
|
12
|
+
import { uploadImageFromUrl } from './urbit/upload.js';
|
|
13
13
|
// Cache for bot profiles per ship (supports multi-account setups)
|
|
14
14
|
const profileCache = new Map();
|
|
15
15
|
/**
|
|
@@ -25,14 +25,14 @@ async function getBotProfile(ship) {
|
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
try {
|
|
28
|
-
const selfProfile = await scry({ app:
|
|
28
|
+
const selfProfile = await scry({ app: 'contacts', path: '/v1/self' });
|
|
29
29
|
const profile = {
|
|
30
|
-
nickname: selfProfile?.nickname?.value ??
|
|
31
|
-
avatar: selfProfile?.avatar?.value ??
|
|
30
|
+
nickname: selfProfile?.nickname?.value ?? '',
|
|
31
|
+
avatar: selfProfile?.avatar?.value ?? '',
|
|
32
32
|
};
|
|
33
33
|
profileCache.set(ship, profile);
|
|
34
34
|
if (profile.nickname || profile.avatar) {
|
|
35
|
-
console.log(`[tlon] Using self profile for bot meta (${ship}): ${profile.nickname ||
|
|
35
|
+
console.log(`[tlon] Using self profile for bot meta (${ship}): ${profile.nickname || '(no nickname)'}`);
|
|
36
36
|
return profile;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -44,7 +44,7 @@ async function getBotProfile(ship) {
|
|
|
44
44
|
function resolveOutboundContext(params) {
|
|
45
45
|
const account = resolveTlonAccount(params.cfg, params.accountId ?? undefined);
|
|
46
46
|
if (!account.configured || !account.ship || !account.url || !account.code) {
|
|
47
|
-
throw new Error(
|
|
47
|
+
throw new Error('Tlon account not configured');
|
|
48
48
|
}
|
|
49
49
|
const parsed = parseTlonTarget(params.to);
|
|
50
50
|
if (!parsed) {
|
|
@@ -53,17 +53,28 @@ function resolveOutboundContext(params) {
|
|
|
53
53
|
return { account: account, parsed };
|
|
54
54
|
}
|
|
55
55
|
function resolveReplyId(replyToId, threadId) {
|
|
56
|
-
return
|
|
56
|
+
return replyToId ?? threadId ? String(replyToId ?? threadId) : undefined;
|
|
57
57
|
}
|
|
58
58
|
export const tlonRuntimeOutbound = {
|
|
59
59
|
sendText: async ({ cfg, to, text, accountId, replyToId, threadId }) => {
|
|
60
60
|
const { account, parsed } = resolveOutboundContext({ cfg, accountId, to });
|
|
61
|
-
return await withAuthenticatedTlonApi({
|
|
61
|
+
return await withAuthenticatedTlonApi({
|
|
62
|
+
url: account.url,
|
|
63
|
+
code: account.code,
|
|
64
|
+
ship: account.ship,
|
|
65
|
+
allowPrivateNetwork: account.allowPrivateNetwork ?? undefined,
|
|
66
|
+
}, async () => {
|
|
62
67
|
const fromShip = normalizeShip(account.ship);
|
|
63
68
|
const replyId = resolveReplyId(replyToId, threadId);
|
|
64
69
|
const botProfile = await getBotProfile(fromShip);
|
|
65
|
-
if (parsed.kind ===
|
|
66
|
-
return await sendDm({
|
|
70
|
+
if (parsed.kind === 'dm') {
|
|
71
|
+
return await sendDm({
|
|
72
|
+
fromShip,
|
|
73
|
+
toShip: parsed.ship,
|
|
74
|
+
text,
|
|
75
|
+
replyToId: replyId,
|
|
76
|
+
botProfile,
|
|
77
|
+
});
|
|
67
78
|
}
|
|
68
79
|
return await sendChannelPost({
|
|
69
80
|
fromShip,
|
|
@@ -74,16 +85,29 @@ export const tlonRuntimeOutbound = {
|
|
|
74
85
|
});
|
|
75
86
|
});
|
|
76
87
|
},
|
|
77
|
-
sendMedia: async ({ cfg, to, text, mediaUrl, accountId, replyToId, threadId }) => {
|
|
88
|
+
sendMedia: async ({ cfg, to, text, mediaUrl, accountId, replyToId, threadId, }) => {
|
|
78
89
|
const { account, parsed } = resolveOutboundContext({ cfg, accountId, to });
|
|
79
|
-
return await withAuthenticatedTlonApi({
|
|
80
|
-
|
|
90
|
+
return await withAuthenticatedTlonApi({
|
|
91
|
+
url: account.url,
|
|
92
|
+
code: account.code,
|
|
93
|
+
ship: account.ship,
|
|
94
|
+
allowPrivateNetwork: account.allowPrivateNetwork ?? undefined,
|
|
95
|
+
}, async () => {
|
|
96
|
+
const uploadedUrl = mediaUrl
|
|
97
|
+
? await uploadImageFromUrl(mediaUrl)
|
|
98
|
+
: undefined;
|
|
81
99
|
const fromShip = normalizeShip(account.ship);
|
|
82
100
|
const story = buildMediaStory(text, uploadedUrl);
|
|
83
101
|
const replyId = resolveReplyId(replyToId, threadId);
|
|
84
102
|
const botProfile = await getBotProfile(fromShip);
|
|
85
|
-
if (parsed.kind ===
|
|
86
|
-
return await sendDmWithStory({
|
|
103
|
+
if (parsed.kind === 'dm') {
|
|
104
|
+
return await sendDmWithStory({
|
|
105
|
+
fromShip,
|
|
106
|
+
toShip: parsed.ship,
|
|
107
|
+
story,
|
|
108
|
+
replyToId: replyId,
|
|
109
|
+
botProfile,
|
|
110
|
+
});
|
|
87
111
|
}
|
|
88
112
|
return await sendChannelPost({
|
|
89
113
|
fromShip,
|
|
@@ -98,17 +122,19 @@ export const tlonRuntimeOutbound = {
|
|
|
98
122
|
export async function probeTlonAccount(account) {
|
|
99
123
|
try {
|
|
100
124
|
const ssrfPolicy = ssrfPolicyFromAllowPrivateNetwork(account.allowPrivateNetwork);
|
|
101
|
-
const cookie = await authenticate(account.url, account.code, {
|
|
125
|
+
const cookie = await authenticate(account.url, account.code, {
|
|
126
|
+
ssrfPolicy,
|
|
127
|
+
});
|
|
102
128
|
const { response, release } = await urbitFetch({
|
|
103
129
|
baseUrl: account.url,
|
|
104
|
-
path:
|
|
130
|
+
path: '/~/name',
|
|
105
131
|
init: {
|
|
106
|
-
method:
|
|
132
|
+
method: 'GET',
|
|
107
133
|
headers: { Cookie: cookie },
|
|
108
134
|
},
|
|
109
135
|
ssrfPolicy,
|
|
110
136
|
timeoutMs: 30_000,
|
|
111
|
-
auditContext:
|
|
137
|
+
auditContext: 'tlon-probe-account',
|
|
112
138
|
});
|
|
113
139
|
try {
|
|
114
140
|
if (!response.ok) {
|
|
@@ -121,7 +147,10 @@ export async function probeTlonAccount(account) {
|
|
|
121
147
|
}
|
|
122
148
|
}
|
|
123
149
|
catch (error) {
|
|
124
|
-
return {
|
|
150
|
+
return {
|
|
151
|
+
ok: false,
|
|
152
|
+
error: error?.message ?? String(error),
|
|
153
|
+
};
|
|
125
154
|
}
|
|
126
155
|
}
|
|
127
156
|
export async function startTlonGatewayAccount(ctx) {
|
|
@@ -131,7 +160,7 @@ export async function startTlonGatewayAccount(ctx) {
|
|
|
131
160
|
ship: account.ship,
|
|
132
161
|
url: account.url,
|
|
133
162
|
});
|
|
134
|
-
ctx.log?.info(`[${account.accountId}] starting Tlon provider for ${account.ship ??
|
|
163
|
+
ctx.log?.info(`[${account.accountId}] starting Tlon provider for ${account.ship ?? 'tlon'}`);
|
|
135
164
|
return monitorTlonProvider({
|
|
136
165
|
runtime: ctx.runtime,
|
|
137
166
|
abortSignal: ctx.abortSignal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.runtime.js","sourceRoot":"","sources":["../../src/channel.runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel.runtime.js","sourceRoot":"","sources":["../../src/channel.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import { buildChannelConfigSchema } from
|
|
2
|
-
import { z } from
|
|
1
|
+
import { buildChannelConfigSchema } from 'openclaw/plugin-sdk/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
3
|
const ShipSchema = z.string().min(1);
|
|
4
4
|
const ChannelNestSchema = z.string().min(1);
|
|
5
5
|
export const TlonChannelRuleSchema = z.object({
|
|
6
|
-
mode: z.enum([
|
|
6
|
+
mode: z.enum(['restricted', 'open']).optional(),
|
|
7
7
|
allowedShips: z.array(ShipSchema).optional(),
|
|
8
8
|
});
|
|
9
9
|
export const TlonAuthorizationSchema = z.object({
|
|
10
10
|
channelRules: z.record(z.string(), TlonChannelRuleSchema).optional(),
|
|
11
11
|
});
|
|
12
|
-
export const ReactionLevelSchema = z.enum([
|
|
12
|
+
export const ReactionLevelSchema = z.enum([
|
|
13
|
+
'off',
|
|
14
|
+
'ack',
|
|
15
|
+
'minimal',
|
|
16
|
+
'extensive',
|
|
17
|
+
]);
|
|
13
18
|
export const TlonTelemetrySchema = z.object({
|
|
14
19
|
enabled: z.boolean().optional(),
|
|
15
20
|
apiKey: z.string().min(1).optional(),
|
|
16
21
|
host: z.string().min(1).optional(),
|
|
17
22
|
});
|
|
23
|
+
/**
|
|
24
|
+
* Canonical private-network opt-in. The flat top-level
|
|
25
|
+
* `allowPrivateNetwork` field below is kept as a deprecated alias; new
|
|
26
|
+
* configs should use `network.dangerouslyAllowPrivateNetwork`.
|
|
27
|
+
* `openclaw doctor --fix` migrates the legacy field automatically.
|
|
28
|
+
*/
|
|
29
|
+
export const TlonNetworkSchema = z.object({
|
|
30
|
+
dangerouslyAllowPrivateNetwork: z.boolean().optional(),
|
|
31
|
+
});
|
|
18
32
|
/**
|
|
19
33
|
* Explicit opt-in for the plugin-driven owner re-engagement nudge scheduler.
|
|
20
34
|
*
|
|
@@ -44,9 +58,12 @@ export const TlonAccountSchema = z.object({
|
|
|
44
58
|
ship: ShipSchema.optional(),
|
|
45
59
|
url: z.string().optional(),
|
|
46
60
|
code: z.string().optional(),
|
|
61
|
+
network: TlonNetworkSchema.optional(),
|
|
62
|
+
/** @deprecated Use `network.dangerouslyAllowPrivateNetwork`. Migrated by `openclaw doctor --fix`. */
|
|
47
63
|
allowPrivateNetwork: z.boolean().optional(),
|
|
48
64
|
groupChannels: z.array(ChannelNestSchema).optional(),
|
|
49
65
|
dmAllowlist: z.array(ShipSchema).optional(),
|
|
66
|
+
groupInviteAllowlist: z.array(ShipSchema).optional(),
|
|
50
67
|
autoDiscoverChannels: z.boolean().optional(),
|
|
51
68
|
showModelSignature: z.boolean().optional(),
|
|
52
69
|
// Auto-accept settings
|
|
@@ -73,9 +90,12 @@ export const TlonConfigSchema = z.object({
|
|
|
73
90
|
ship: ShipSchema.optional(),
|
|
74
91
|
url: z.string().optional(),
|
|
75
92
|
code: z.string().optional(),
|
|
93
|
+
network: TlonNetworkSchema.optional(),
|
|
94
|
+
/** @deprecated Use `network.dangerouslyAllowPrivateNetwork`. Migrated by `openclaw doctor --fix`. */
|
|
76
95
|
allowPrivateNetwork: z.boolean().optional(),
|
|
77
96
|
groupChannels: z.array(ChannelNestSchema).optional(),
|
|
78
97
|
dmAllowlist: z.array(ShipSchema).optional(),
|
|
98
|
+
groupInviteAllowlist: z.array(ShipSchema).optional(),
|
|
79
99
|
autoDiscoverChannels: z.boolean().optional(),
|
|
80
100
|
showModelSignature: z.boolean().optional(),
|
|
81
101
|
authorization: TlonAuthorizationSchema.optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { sharedSlot } from './shared-state.js';
|
|
2
|
+
const diagnosticSubscriptionSlot = sharedSlot('telemetry.diagnosticEventsSubscription');
|
|
3
|
+
const diagnosticSubscriptionIdSlot = sharedSlot('telemetry.diagnosticEventsSubscription.nextId');
|
|
4
|
+
function nextDiagnosticSubscriptionId() {
|
|
5
|
+
const nextId = (diagnosticSubscriptionIdSlot.get() ?? 0) + 1;
|
|
6
|
+
diagnosticSubscriptionIdSlot.set(nextId);
|
|
7
|
+
return nextId;
|
|
8
|
+
}
|
|
9
|
+
export function shouldInstallTlonDiagnosticSubscriptions(registrationMode) {
|
|
10
|
+
return registrationMode === 'full';
|
|
11
|
+
}
|
|
12
|
+
export function installTlonDiagnosticSubscriptions(install) {
|
|
13
|
+
diagnosticSubscriptionSlot.get()?.unsubscribe();
|
|
14
|
+
const id = nextDiagnosticSubscriptionId();
|
|
15
|
+
let unsubscribed = false;
|
|
16
|
+
let installedUnsubscribe;
|
|
17
|
+
try {
|
|
18
|
+
installedUnsubscribe = install();
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
diagnosticSubscriptionSlot.set(null);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
const unsubscribe = () => {
|
|
25
|
+
if (unsubscribed) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
unsubscribed = true;
|
|
29
|
+
installedUnsubscribe();
|
|
30
|
+
};
|
|
31
|
+
diagnosticSubscriptionSlot.set({ id, unsubscribe });
|
|
32
|
+
return () => {
|
|
33
|
+
if (diagnosticSubscriptionSlot.get()?.id !== id) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
unsubscribe();
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
diagnosticSubscriptionSlot.set(null);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function clearTlonDiagnosticSubscriptionsForTest() {
|
|
45
|
+
diagnosticSubscriptionSlot.get()?.unsubscribe();
|
|
46
|
+
diagnosticSubscriptionSlot.set(null);
|
|
47
|
+
diagnosticSubscriptionIdSlot.set(null);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=diagnostic-subscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-subscriptions.js","sourceRoot":"","sources":["../../src/diagnostic-subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS/C,MAAM,0BAA0B,GAAG,UAAU,CAC3C,wCAAwC,CACzC,CAAC;AACF,MAAM,4BAA4B,GAAG,UAAU,CAC7C,+CAA+C,CAChD,CAAC;AAEF,SAAS,4BAA4B;IACnC,MAAM,MAAM,GAAG,CAAC,4BAA4B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,gBAA2C;IAE3C,OAAO,gBAAgB,KAAK,MAAM,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,OAA4C;IAE5C,0BAA0B,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;IAEhD,MAAM,EAAE,GAAG,4BAA4B,EAAE,CAAC;IAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,oBAAgC,CAAC;IACrC,IAAI,CAAC;QACH,oBAAoB,GAAG,OAAO,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,YAAY,GAAG,IAAI,CAAC;QACpB,oBAAoB,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,0BAA0B,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAEpD,OAAO,GAAG,EAAE;QACV,IAAI,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,WAAW,EAAE,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC;IACrD,0BAA0B,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;IAChD,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-owner.js","sourceRoot":"","sources":["../../src/effective-owner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAElD,MAAM,UAAU,qBAAqB,
|
|
1
|
+
{"version":3,"file":"effective-owner.js","sourceRoot":"","sources":["../../src/effective-owner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAElD,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,IAAmB;IAEnB,IAAI,IAAI,EAAE,CAAC;QACT,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC"}
|