@tloncorp/openclaw 0.2.0 → 0.4.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 +232 -23
- package/dist/index.js +204 -69
- package/dist/index.js.map +1 -1
- package/dist/setup-api.js +3 -0
- package/dist/setup-api.js.map +1 -0
- package/dist/setup-entry.js +4 -0
- package/dist/setup-entry.js.map +1 -0
- package/dist/src/actions.js +30 -8
- package/dist/src/actions.js.map +1 -1
- package/dist/src/channel.js +155 -420
- package/dist/src/channel.js.map +1 -1
- package/dist/src/channel.runtime.js +142 -0
- package/dist/src/channel.runtime.js.map +1 -0
- package/dist/src/config-schema.js +37 -1
- package/dist/src/config-schema.js.map +1 -1
- package/dist/src/effective-owner.js +22 -0
- package/dist/src/effective-owner.js.map +1 -0
- package/dist/src/gateway-status.js +72 -0
- package/dist/src/gateway-status.js.map +1 -0
- package/dist/src/heartbeat-telemetry.js +155 -0
- package/dist/src/heartbeat-telemetry.js.map +1 -0
- package/dist/src/monitor/approval.js.map +1 -1
- package/dist/src/monitor/computing-presence.js +221 -0
- package/dist/src/monitor/computing-presence.js.map +1 -0
- package/dist/src/monitor/discovery.js +2 -2
- package/dist/src/monitor/index.js +665 -171
- package/dist/src/monitor/index.js.map +1 -1
- package/dist/src/monitor/media.js +165 -6
- package/dist/src/monitor/media.js.map +1 -1
- package/dist/src/monitor/nudge-runner.js +232 -0
- package/dist/src/monitor/nudge-runner.js.map +1 -0
- package/dist/src/monitor/nudge-state.js +58 -0
- package/dist/src/monitor/nudge-state.js.map +1 -0
- package/dist/src/monitor/owner-reply-persistence.js +92 -0
- package/dist/src/monitor/owner-reply-persistence.js.map +1 -0
- package/dist/src/monitor/pending-nudge-persistence.js +15 -0
- package/dist/src/monitor/pending-nudge-persistence.js.map +1 -0
- package/dist/src/monitor/settings-sync.js +28 -0
- package/dist/src/monitor/settings-sync.js.map +1 -0
- package/dist/src/monitor/utils.js +0 -4
- package/dist/src/monitor/utils.js.map +1 -1
- package/dist/src/nudge-candidate.js +109 -0
- package/dist/src/nudge-candidate.js.map +1 -0
- package/dist/src/nudge-decision.js +309 -0
- package/dist/src/nudge-decision.js.map +1 -0
- package/dist/src/nudge-messages.js +25 -0
- package/dist/src/nudge-messages.js.map +1 -0
- package/dist/src/nudge-scheduler.js +91 -0
- package/dist/src/nudge-scheduler.js.map +1 -0
- package/dist/src/pending-nudge.js +57 -0
- package/dist/src/pending-nudge.js.map +1 -0
- package/dist/src/settings.js +77 -5
- package/dist/src/settings.js.map +1 -1
- package/dist/src/setup-core.js +164 -0
- package/dist/src/setup-core.js.map +1 -0
- package/dist/src/setup-surface.js +85 -0
- package/dist/src/setup-surface.js.map +1 -0
- package/dist/src/telemetry.js +252 -0
- package/dist/src/telemetry.js.map +1 -0
- package/dist/src/tlon-binary.js +46 -0
- package/dist/src/tlon-binary.js.map +1 -0
- package/dist/src/tlon-tool-guard.js +44 -0
- package/dist/src/tlon-tool-guard.js.map +1 -0
- package/dist/src/tool-trace.js +100 -0
- package/dist/src/tool-trace.js.map +1 -0
- package/dist/src/types.js +31 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/urbit/api-client.js +4 -3
- package/dist/src/urbit/api-client.js.map +1 -1
- package/dist/src/urbit/base-url.js +2 -2
- package/dist/src/urbit/base-url.js.map +1 -1
- package/dist/src/urbit/fetch.js +1 -1
- package/dist/src/urbit/fetch.js.map +1 -1
- package/dist/src/urbit/upload.js +1 -1
- package/dist/src/urbit/upload.js.map +1 -1
- package/dist/src/version.generated.js +1 -1
- package/dist/src/version.generated.js.map +1 -1
- package/package.json +34 -24
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime guard for the tlon tool.
|
|
3
|
+
*
|
|
4
|
+
* Blocks confirmed wrong-path send operations that should use the built-in
|
|
5
|
+
* `message` tool instead. Allows legacy club (0v...) targets for backward
|
|
6
|
+
* compatibility — clubs are deprecated and slated for removal audit.
|
|
7
|
+
*/
|
|
8
|
+
/** DM sub-operations that are send actions (not management). */
|
|
9
|
+
const DM_SEND_ACTIONS = new Set(["send", "reply"]);
|
|
10
|
+
/**
|
|
11
|
+
* Check whether a parsed tlon command is a blocked send operation.
|
|
12
|
+
*
|
|
13
|
+
* Returns a redirect message string if the operation is blocked,
|
|
14
|
+
* or null if the operation is allowed.
|
|
15
|
+
*/
|
|
16
|
+
export function checkBlockedSendOperation(args) {
|
|
17
|
+
if (args.length < 2)
|
|
18
|
+
return null;
|
|
19
|
+
const subcommand = args[0]?.toLowerCase();
|
|
20
|
+
const action = args[1]?.toLowerCase();
|
|
21
|
+
if (subcommand !== "dms" || !DM_SEND_ACTIONS.has(action)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
// dms send/reply require a target as the next argument
|
|
25
|
+
const target = args[2];
|
|
26
|
+
if (!target)
|
|
27
|
+
return null;
|
|
28
|
+
// Allow legacy club targets (0v...) for backward compatibility
|
|
29
|
+
if (target.startsWith("0v")) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Non-club target — this is a wrong-path send that should use `message`
|
|
33
|
+
// For replies, preserve the messageId (args[3]) so the redirect includes replyTo
|
|
34
|
+
if (action === "reply") {
|
|
35
|
+
const messageId = args[3] ?? "<messageId>";
|
|
36
|
+
return (`Blocked: 'dms reply' with a ship target should use the \`message\` tool instead. ` +
|
|
37
|
+
`Use: message action=send, channel=tlon, target=${target}, replyTo=${messageId}, message=<text>. ` +
|
|
38
|
+
`The \`message\` tool handles threading, bot profile, rate limiting, and reply routing correctly.`);
|
|
39
|
+
}
|
|
40
|
+
return (`Blocked: 'dms send' with a ship target should use the \`message\` tool instead. ` +
|
|
41
|
+
`Use: message action=send, channel=tlon, target=${target}, message=<text>. ` +
|
|
42
|
+
`The \`message\` tool handles threading, bot profile, rate limiting, and reply routing correctly.`);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=tlon-tool-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tlon-tool-guard.js","sourceRoot":"","sources":["../../src/tlon-tool-guard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gEAAgE;AAChE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAc;IACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAEtC,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,+DAA+D;IAC/D,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,iFAAiF;IACjF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;QAC3C,OAAO,CACL,mFAAmF;YACnF,kDAAkD,MAAM,aAAa,SAAS,oBAAoB;YAClG,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,CACL,kFAAkF;QAClF,kDAAkD,MAAM,oBAAoB;QAC5E,kGAAkG,CACnG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
const TOOL_TRACE_CONTENT_ENV_VARS = [
|
|
2
|
+
"TEST_LIVE_TOOL_TRACE_CONTENTS",
|
|
3
|
+
"CI_LIVE_TOOL_TRACE_CONTENTS",
|
|
4
|
+
];
|
|
5
|
+
const REDACTED = "[REDACTED]";
|
|
6
|
+
const MAX_DEPTH = 4;
|
|
7
|
+
const MAX_STRING_LENGTH = 300;
|
|
8
|
+
const MAX_ARRAY_ITEMS = 20;
|
|
9
|
+
const MAX_OBJECT_KEYS = 30;
|
|
10
|
+
const SENSITIVE_KEY_RE = /^(?:authorization|auth|password|secret|token|accesstoken|refreshtoken|apikey|api_key|cookie|set-cookie|code)$/i;
|
|
11
|
+
function isPlainObject(value) {
|
|
12
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
function truncateString(value) {
|
|
15
|
+
if (value.startsWith("data:")) {
|
|
16
|
+
const prefix = value.slice(0, 48);
|
|
17
|
+
return `${prefix}… [data-url ${value.length} chars]`;
|
|
18
|
+
}
|
|
19
|
+
if (value.length <= MAX_STRING_LENGTH) {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
return `${value.slice(0, MAX_STRING_LENGTH)}… [${value.length} chars]`;
|
|
23
|
+
}
|
|
24
|
+
function sanitizeValue(value, depth = 0) {
|
|
25
|
+
if (value == null || typeof value === "number" || typeof value === "boolean") {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value === "string") {
|
|
29
|
+
return truncateString(value);
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === "bigint") {
|
|
32
|
+
return value.toString();
|
|
33
|
+
}
|
|
34
|
+
if (typeof value === "function") {
|
|
35
|
+
return `[Function ${value.name || "anonymous"}]`;
|
|
36
|
+
}
|
|
37
|
+
if (value instanceof Error) {
|
|
38
|
+
return {
|
|
39
|
+
name: value.name,
|
|
40
|
+
message: truncateString(value.message),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (depth >= MAX_DEPTH) {
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
return `[Array(${value.length})]`;
|
|
46
|
+
}
|
|
47
|
+
if (isPlainObject(value)) {
|
|
48
|
+
return `[Object keys=${Object.keys(value).length}]`;
|
|
49
|
+
}
|
|
50
|
+
return String(value);
|
|
51
|
+
}
|
|
52
|
+
if (Array.isArray(value)) {
|
|
53
|
+
const items = value.slice(0, MAX_ARRAY_ITEMS).map((item) => sanitizeValue(item, depth + 1));
|
|
54
|
+
if (value.length > MAX_ARRAY_ITEMS) {
|
|
55
|
+
items.push(`[+${value.length - MAX_ARRAY_ITEMS} more items]`);
|
|
56
|
+
}
|
|
57
|
+
return items;
|
|
58
|
+
}
|
|
59
|
+
if (isPlainObject(value)) {
|
|
60
|
+
const output = {};
|
|
61
|
+
const entries = Object.entries(value);
|
|
62
|
+
for (const [index, [key, nested]] of entries.entries()) {
|
|
63
|
+
if (index >= MAX_OBJECT_KEYS) {
|
|
64
|
+
output.__truncated__ = `[+${entries.length - MAX_OBJECT_KEYS} more keys]`;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
output[key] = SENSITIVE_KEY_RE.test(key)
|
|
68
|
+
? REDACTED
|
|
69
|
+
: sanitizeValue(nested, depth + 1);
|
|
70
|
+
}
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
73
|
+
return String(value);
|
|
74
|
+
}
|
|
75
|
+
export function liveToolTraceContentsEnabled(env = process.env) {
|
|
76
|
+
return TOOL_TRACE_CONTENT_ENV_VARS.some((name) => /^(1|true|yes|on)$/i.test(env[name] ?? ""));
|
|
77
|
+
}
|
|
78
|
+
export function formatToolTraceEvent(params) {
|
|
79
|
+
const body = {
|
|
80
|
+
phase: params.phase,
|
|
81
|
+
sessionKey: params.sessionKey?.trim() || undefined,
|
|
82
|
+
toolName: params.toolName,
|
|
83
|
+
payload: sanitizeValue(params.payload),
|
|
84
|
+
};
|
|
85
|
+
return `tooltrace ${params.phase}: ${JSON.stringify(body)}`;
|
|
86
|
+
}
|
|
87
|
+
export function shouldLogAfterToolTrace(event) {
|
|
88
|
+
if (typeof event.durationMs === "number") {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
if (event.error) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return event.result == null;
|
|
95
|
+
}
|
|
96
|
+
export const _testing = {
|
|
97
|
+
sanitizeValue,
|
|
98
|
+
truncateString,
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=tool-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-trace.js","sourceRoot":"","sources":["../../src/tool-trace.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAAG;IAClC,+BAA+B;IAC/B,6BAA6B;CACrB,CAAC;AAEX,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC9B,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,gBAAgB,GAAG,gHAAgH,CAAC;AAE1I,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,GAAG,MAAM,eAAe,KAAK,CAAC,MAAM,SAAS,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,KAAK,CAAC,MAAM,SAAS,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IAC9C,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,aAAa,KAAK,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;SACvC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,UAAU,KAAK,CAAC,MAAM,IAAI,CAAC;QACpC,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,eAAe,cAAc,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,IAAI,eAAe,EAAE,CAAC;gBAC7B,MAAM,CAAC,aAAa,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG,eAAe,aAAa,CAAC;gBAC1E,MAAM;YACR,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtC,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;IAC5D,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAKpC;IACC,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,SAAS;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;KACvC,CAAC;IAEF,OAAO,aAAa,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAIvC;IACC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,cAAc;CACf,CAAC"}
|
package/dist/src/types.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
function resolveTelemetryConfig(base, account) {
|
|
2
|
+
return {
|
|
3
|
+
enabled: account?.enabled ?? base?.enabled ?? false,
|
|
4
|
+
apiKey: account?.apiKey ?? base?.apiKey ?? null,
|
|
5
|
+
host: account?.host ?? base?.host ?? null,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
1
8
|
export function resolveTlonAccount(cfg, accountId) {
|
|
2
9
|
const base = cfg.channels?.tlon;
|
|
3
10
|
if (!base) {
|
|
@@ -21,6 +28,11 @@ export function resolveTlonAccount(cfg, accountId) {
|
|
|
21
28
|
ownerShip: null,
|
|
22
29
|
reactionLevel: null,
|
|
23
30
|
maxConsecutiveBotResponses: null,
|
|
31
|
+
telemetry: {
|
|
32
|
+
enabled: false,
|
|
33
|
+
apiKey: null,
|
|
34
|
+
host: null,
|
|
35
|
+
},
|
|
24
36
|
};
|
|
25
37
|
}
|
|
26
38
|
const useDefault = !accountId || accountId === "default";
|
|
@@ -44,9 +56,11 @@ export function resolveTlonAccount(cfg, accountId) {
|
|
|
44
56
|
null);
|
|
45
57
|
const ownerShip = (account?.ownerShip ?? base.ownerShip ?? null);
|
|
46
58
|
const reactionLevel = (account?.reactionLevel ?? base.reactionLevel ?? null);
|
|
47
|
-
const maxConsecutiveBotResponses = (account
|
|
59
|
+
const maxConsecutiveBotResponses = (account
|
|
60
|
+
?.maxConsecutiveBotResponses ??
|
|
48
61
|
base.maxConsecutiveBotResponses ??
|
|
49
62
|
null);
|
|
63
|
+
const telemetry = resolveTelemetryConfig(base.telemetry, account?.telemetry);
|
|
50
64
|
const defaultAuthorizedShips = (account?.defaultAuthorizedShips ??
|
|
51
65
|
base?.defaultAuthorizedShips ??
|
|
52
66
|
[]);
|
|
@@ -71,6 +85,7 @@ export function resolveTlonAccount(cfg, accountId) {
|
|
|
71
85
|
ownerShip,
|
|
72
86
|
reactionLevel,
|
|
73
87
|
maxConsecutiveBotResponses,
|
|
88
|
+
telemetry,
|
|
74
89
|
};
|
|
75
90
|
}
|
|
76
91
|
export function listTlonAccountIds(cfg) {
|
|
@@ -81,4 +96,19 @@ export function listTlonAccountIds(cfg) {
|
|
|
81
96
|
const accounts = base.accounts ?? {};
|
|
82
97
|
return [...(base.ship ? ["default"] : []), ...Object.keys(accounts)];
|
|
83
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Like `listTlonAccountIds`, but only includes accounts that are both
|
|
101
|
+
* `enabled !== false` and fully `configured` (ship + url + code present).
|
|
102
|
+
*
|
|
103
|
+
* Use this when the question is "how many accounts will actually run a
|
|
104
|
+
* monitor in this process". Disabled or stub accounts cannot race
|
|
105
|
+
* shared-process state and should not, for example, disable the nudge
|
|
106
|
+
* scheduler's single-runnable-account guard.
|
|
107
|
+
*/
|
|
108
|
+
export function listRunnableTlonAccountIds(cfg) {
|
|
109
|
+
return listTlonAccountIds(cfg).filter((id) => {
|
|
110
|
+
const account = resolveTlonAccount(cfg, id);
|
|
111
|
+
return account.enabled && account.configured;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
84
114
|
//# sourceMappingURL=types.js.map
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { urbitFetch } from "./fetch.js";
|
|
|
8
8
|
* The @tloncorp/api configureClient accepts a `client` that looks like an Urbit instance.
|
|
9
9
|
* Includes stubs for connect/eventSource/scryWithInfo so configureClient never crashes.
|
|
10
10
|
*/
|
|
11
|
-
function createClientShim(pokeFn, scryFn) {
|
|
11
|
+
function createClientShim(pokeFn, shipUrl, scryFn) {
|
|
12
12
|
return {
|
|
13
13
|
poke: (params) => pokeFn(params),
|
|
14
14
|
on: () => ({ on: () => ({}) }),
|
|
@@ -30,6 +30,7 @@ function createClientShim(pokeFn, scryFn) {
|
|
|
30
30
|
// Properties configureClient may access
|
|
31
31
|
verbose: false,
|
|
32
32
|
nodeId: "",
|
|
33
|
+
url: shipUrl,
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
@@ -37,7 +38,7 @@ function createClientShim(pokeFn, scryFn) {
|
|
|
37
38
|
* Use this when you already have an authenticated poke backend (e.g., SSE client in monitor).
|
|
38
39
|
*/
|
|
39
40
|
export function configureTlonApiWithPoke(pokeFn, ship, shipUrl, scryFn) {
|
|
40
|
-
const shim = createClientShim(pokeFn, scryFn);
|
|
41
|
+
const shim = createClientShim(pokeFn, shipUrl, scryFn);
|
|
41
42
|
configureClient({
|
|
42
43
|
shipName: ship.replace(/^~/, ""),
|
|
43
44
|
shipUrl,
|
|
@@ -82,7 +83,7 @@ export async function withAuthenticatedTlonApi(params, fn) {
|
|
|
82
83
|
await release();
|
|
83
84
|
}
|
|
84
85
|
};
|
|
85
|
-
const shim = createClientShim(api.poke, scryFn);
|
|
86
|
+
const shim = createClientShim(api.poke, params.url, scryFn);
|
|
86
87
|
configureClient({
|
|
87
88
|
shipName: params.ship.replace(/^~/, ""),
|
|
88
89
|
shipUrl: params.url,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/urbit/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,MAAe;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/urbit/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isBlockedHostnameOrIp } from "openclaw/plugin-sdk/tlon";
|
|
2
2
|
function hasScheme(value) {
|
|
3
3
|
return /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(value);
|
|
4
4
|
}
|
|
@@ -40,6 +40,6 @@ export function isBlockedUrbitHostname(hostname) {
|
|
|
40
40
|
if (!normalized) {
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
return
|
|
43
|
+
return isBlockedHostnameOrIp(normalized);
|
|
44
44
|
}
|
|
45
45
|
//# sourceMappingURL=base-url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-url.js","sourceRoot":"","sources":["../../../src/urbit/base-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base-url.js","sourceRoot":"","sources":["../../../src/urbit/base-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAMjE,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC;IAEtE,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAClD,CAAC;IAED,wFAAwF;IACxF,+DAA+D;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;QACtB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;QACzD,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,IAAI,QAAQ,GAAG;YACjB,CAAC,CAAC,QAAQ,CAAC;IAEf,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/src/urbit/fetch.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/urbit/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/urbit/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsB5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAyB;IACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,MAAM,kBAAkB,CAAC;QAC9B,GAAG;QACH,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/urbit/upload.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Upload an image from a URL to Tlon storage.
|
|
3
3
|
*/
|
|
4
4
|
import { uploadFile } from "@tloncorp/api";
|
|
5
|
-
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk";
|
|
5
|
+
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/tlon";
|
|
6
6
|
import { getDefaultSsrFPolicy } from "./context.js";
|
|
7
7
|
/**
|
|
8
8
|
* Fetch an image from a URL and upload it to Tlon storage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/urbit/upload.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/urbit/upload.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,uCAAuC;QACvC,iFAAiF;QACjF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC;YACrD,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YACvB,MAAM,EAAE,oBAAoB,EAAE;YAC9B,YAAY,EAAE,mBAAmB;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,qCAAqC,QAAQ,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClF,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC;YACxE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;YAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YAExE,yBAAyB;YACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,IAAI;gBACJ,QAAQ;gBACR,WAAW;aACZ,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sDAAsD,GAAG,EAAE,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.generated.js","sourceRoot":"","sources":["../../src/version.generated.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"version.generated.js","sourceRoot":"","sources":["../../src/version.generated.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tloncorp/openclaw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "OpenClaw Tlon/Urbit channel plugin",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/tloncorp/openclaw-tlon.git"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"openclaw.plugin.json",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
5
15
|
"type": "module",
|
|
6
16
|
"main": "dist/index.js",
|
|
7
17
|
"types": "dist/index.d.ts",
|
|
@@ -15,43 +25,40 @@
|
|
|
15
25
|
"import": "./dist/index.js"
|
|
16
26
|
}
|
|
17
27
|
},
|
|
18
|
-
"files": [
|
|
19
|
-
"dist/",
|
|
20
|
-
"openclaw.plugin.json",
|
|
21
|
-
"README.md"
|
|
22
|
-
],
|
|
23
28
|
"scripts": {
|
|
24
|
-
"prebuild": "node scripts/generate-version.js",
|
|
25
29
|
"build": "tsc",
|
|
26
30
|
"clean": "rm -rf dist",
|
|
27
|
-
|
|
28
31
|
"dev": "./dev/run.sh",
|
|
32
|
+
"dev:api:link": "./dev/link-local-api.sh",
|
|
33
|
+
"dev:api:unlink": "./dev/unlink-local-api.sh",
|
|
29
34
|
"format": "oxfmt --check",
|
|
30
35
|
"format:fix": "oxfmt --write",
|
|
31
36
|
"lint": "oxlint --type-aware",
|
|
32
37
|
"lint:fix": "pnpm format:fix && oxlint --type-aware --fix",
|
|
38
|
+
"prebuild": "node scripts/generate-version.js",
|
|
33
39
|
"test": "vitest run src/",
|
|
34
|
-
"test:
|
|
35
|
-
"test:watch": "vitest src/",
|
|
40
|
+
"test:all": "vitest run",
|
|
36
41
|
"test:integration": "bash ./test/run.sh",
|
|
37
42
|
"test:integration:dev": "./test/run-dev.sh",
|
|
38
43
|
"test:integration:watch": "./test/run-dev.sh --watch",
|
|
39
|
-
"test:
|
|
44
|
+
"test:manual": "bash ./test/run-manual.sh",
|
|
45
|
+
"test:security": "vitest run src/security.test.ts",
|
|
46
|
+
"test:watch": "vitest src/",
|
|
47
|
+
"prepare:publish": "npm run build && node scripts/prepare-publish-package.js",
|
|
48
|
+
"pack:publish": "npm run prepare:publish && npm pack .publish",
|
|
49
|
+
"publish:clean": "npm run prepare:publish && npm publish .publish --access public"
|
|
40
50
|
},
|
|
41
51
|
"dependencies": {
|
|
42
|
-
"@tloncorp/api": "
|
|
43
|
-
"@tloncorp/tlon-skill": "^0.
|
|
52
|
+
"@tloncorp/api": "presence",
|
|
53
|
+
"@tloncorp/tlon-skill": "^0.3.4",
|
|
44
54
|
"@urbit/aura": "^3.0.0",
|
|
45
|
-
"
|
|
55
|
+
"posthog-node": "^5.28.9",
|
|
46
56
|
"zod": "^4.3.6"
|
|
47
57
|
},
|
|
48
|
-
"peerDependencies": {
|
|
49
|
-
"openclaw": ">=2026.2.0"
|
|
50
|
-
},
|
|
51
58
|
"devDependencies": {
|
|
52
59
|
"@types/node": "^25.4.0",
|
|
53
60
|
"dotenv": "^17.2.4",
|
|
54
|
-
"openclaw": "2026.2
|
|
61
|
+
"openclaw": "2026.4.2",
|
|
55
62
|
"oxfmt": "0.27.0",
|
|
56
63
|
"oxlint": "^1.42.0",
|
|
57
64
|
"oxlint-tsgolint": "^0.16.0",
|
|
@@ -59,7 +66,14 @@
|
|
|
59
66
|
"vitest": "^4.0.0",
|
|
60
67
|
"zod": "^4.3.6"
|
|
61
68
|
},
|
|
69
|
+
"peerDependencies": {
|
|
70
|
+
"openclaw": ">=2026.3.22"
|
|
71
|
+
},
|
|
62
72
|
"openclaw": {
|
|
73
|
+
"extensions": [
|
|
74
|
+
"./dist/index.js"
|
|
75
|
+
],
|
|
76
|
+
"setupEntry": "./dist/setup-entry.js",
|
|
63
77
|
"channel": {
|
|
64
78
|
"id": "tlon",
|
|
65
79
|
"label": "Tlon",
|
|
@@ -71,14 +85,10 @@
|
|
|
71
85
|
"quickstartAllowFrom": true
|
|
72
86
|
},
|
|
73
87
|
"install": {
|
|
88
|
+
"minHostVersion": ">=2026.3.22",
|
|
74
89
|
"npmSpec": "@tloncorp/openclaw",
|
|
75
90
|
"localPath": "extensions/tlon",
|
|
76
91
|
"defaultChoice": "npm"
|
|
77
92
|
}
|
|
78
|
-
}
|
|
79
|
-
"repository": {
|
|
80
|
-
"type": "git",
|
|
81
|
-
"url": "https://github.com/tloncorp/openclaw-tlon.git"
|
|
82
|
-
},
|
|
83
|
-
"license": "MIT"
|
|
93
|
+
}
|
|
84
94
|
}
|