@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.
Files changed (104) hide show
  1. package/README.md +130 -141
  2. package/dist/index.js +147 -138
  3. package/dist/index.js.map +1 -1
  4. package/dist/setup-api.js +2 -2
  5. package/dist/setup-entry.js +2 -2
  6. package/dist/setup-entry.js.map +1 -1
  7. package/dist/src/account-fields.js +7 -3
  8. package/dist/src/account-fields.js.map +1 -1
  9. package/dist/src/actions.js +73 -52
  10. package/dist/src/actions.js.map +1 -1
  11. package/dist/src/channel.js +51 -39
  12. package/dist/src/channel.js.map +1 -1
  13. package/dist/src/channel.runtime.js +61 -32
  14. package/dist/src/channel.runtime.js.map +1 -1
  15. package/dist/src/config-schema.js +24 -4
  16. package/dist/src/config-schema.js.map +1 -1
  17. package/dist/src/effective-owner.js.map +1 -1
  18. package/dist/src/gateway-status.js +55 -7
  19. package/dist/src/gateway-status.js.map +1 -1
  20. package/dist/src/monitor/approval.js +71 -62
  21. package/dist/src/monitor/approval.js.map +1 -1
  22. package/dist/src/monitor/command-auth.js +7 -7
  23. package/dist/src/monitor/command-auth.js.map +1 -1
  24. package/dist/src/monitor/command-bridge.js +3 -2
  25. package/dist/src/monitor/command-bridge.js.map +1 -1
  26. package/dist/src/monitor/computing-presence.js +76 -12
  27. package/dist/src/monitor/computing-presence.js.map +1 -1
  28. package/dist/src/monitor/discovery.js +16 -9
  29. package/dist/src/monitor/discovery.js.map +1 -1
  30. package/dist/src/monitor/history.js +58 -26
  31. package/dist/src/monitor/history.js.map +1 -1
  32. package/dist/src/monitor/index.js +2771 -2483
  33. package/dist/src/monitor/index.js.map +1 -1
  34. package/dist/src/monitor/media.js +106 -78
  35. package/dist/src/monitor/media.js.map +1 -1
  36. package/dist/src/monitor/nudge-runner.js +36 -27
  37. package/dist/src/monitor/nudge-runner.js.map +1 -1
  38. package/dist/src/monitor/nudge-state.js +7 -11
  39. package/dist/src/monitor/nudge-state.js.map +1 -1
  40. package/dist/src/monitor/owner-reply-persistence.js +27 -26
  41. package/dist/src/monitor/owner-reply-persistence.js.map +1 -1
  42. package/dist/src/monitor/processed-messages.js.map +1 -1
  43. package/dist/src/monitor/settings-sync.js +1 -8
  44. package/dist/src/monitor/settings-sync.js.map +1 -1
  45. package/dist/src/monitor/utils.js +77 -71
  46. package/dist/src/monitor/utils.js.map +1 -1
  47. package/dist/src/nudge-decision.js +40 -43
  48. package/dist/src/nudge-decision.js.map +1 -1
  49. package/dist/src/nudge-messages.js +9 -9
  50. package/dist/src/nudge-scheduler.js.map +1 -1
  51. package/dist/src/owner-listen-command.js +38 -28
  52. package/dist/src/owner-listen-command.js.map +1 -1
  53. package/dist/src/pending-nudge.js.map +1 -1
  54. package/dist/src/runtime.js +10 -6
  55. package/dist/src/runtime.js.map +1 -1
  56. package/dist/src/session-roles.js +2 -1
  57. package/dist/src/session-roles.js.map +1 -1
  58. package/dist/src/settings.js +233 -102
  59. package/dist/src/settings.js.map +1 -1
  60. package/dist/src/setup-core.js +32 -32
  61. package/dist/src/setup-core.js.map +1 -1
  62. package/dist/src/setup-surface.js +19 -19
  63. package/dist/src/setup-surface.js.map +1 -1
  64. package/dist/src/shared-state.js +46 -0
  65. package/dist/src/shared-state.js.map +1 -0
  66. package/dist/src/targets.js +17 -10
  67. package/dist/src/targets.js.map +1 -1
  68. package/dist/src/telemetry.js +17 -14
  69. package/dist/src/telemetry.js.map +1 -1
  70. package/dist/src/tlon-binary.js +20 -12
  71. package/dist/src/tlon-binary.js.map +1 -1
  72. package/dist/src/tlon-tool-guard.js +5 -5
  73. package/dist/src/tool-trace.js +17 -13
  74. package/dist/src/tool-trace.js.map +1 -1
  75. package/dist/src/types.js +30 -12
  76. package/dist/src/types.js.map +1 -1
  77. package/dist/src/urbit/api-client.js +16 -12
  78. package/dist/src/urbit/api-client.js.map +1 -1
  79. package/dist/src/urbit/auth.js +9 -9
  80. package/dist/src/urbit/auth.js.map +1 -1
  81. package/dist/src/urbit/base-url.js +11 -11
  82. package/dist/src/urbit/base-url.js.map +1 -1
  83. package/dist/src/urbit/channel-ops.js +25 -19
  84. package/dist/src/urbit/channel-ops.js.map +1 -1
  85. package/dist/src/urbit/context.js +8 -8
  86. package/dist/src/urbit/context.js.map +1 -1
  87. package/dist/src/urbit/errors.js +33 -7
  88. package/dist/src/urbit/errors.js.map +1 -1
  89. package/dist/src/urbit/fetch.js +3 -3
  90. package/dist/src/urbit/fetch.js.map +1 -1
  91. package/dist/src/urbit/http-poke.js +10 -10
  92. package/dist/src/urbit/http-poke.js.map +1 -1
  93. package/dist/src/urbit/send.js +27 -23
  94. package/dist/src/urbit/send.js.map +1 -1
  95. package/dist/src/urbit/sse-client.js +45 -41
  96. package/dist/src/urbit/sse-client.js.map +1 -1
  97. package/dist/src/urbit/story.js +31 -30
  98. package/dist/src/urbit/story.js.map +1 -1
  99. package/dist/src/urbit/upload.js +8 -8
  100. package/dist/src/urbit/upload.js.map +1 -1
  101. package/dist/src/version.generated.js +2 -1
  102. package/dist/src/version.generated.js.map +1 -1
  103. package/openclaw.plugin.json +37 -0
  104. package/package.json +35 -15
@@ -1 +1 @@
1
- {"version":3,"file":"processed-messages.js","sourceRoot":"","sources":["../../../src/monitor/processed-messages.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,6BAA6B,CAAC,KAAK,GAAG,IAAI;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,EAAkB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,EAAkB,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,GAAG;QACH,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"processed-messages.js","sourceRoot":"","sources":["../../../src/monitor/processed-messages.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,6BAA6B,CAC3C,KAAK,GAAG,IAAI;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,EAAkB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,EAAkB,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,GAAG;QACH,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC"}
@@ -1,11 +1,4 @@
1
- /**
2
- * Pure helper for settings mirror synchronization.
3
- *
4
- * Detects ownerShip and pendingNudge transitions from the settings mirror.
5
- * The scheduler no longer routes through this helper for lastNudgeStage —
6
- * the authoritative stage lives in a fresh scry plus a local shadow.
7
- */
8
- import { normalizeShip } from "../targets.js";
1
+ import { normalizeShip } from '../targets.js';
9
2
  export function resolveSettingsMirrorSync(params) {
10
3
  const { prevSettings, newSettings, fileConfigOwnerShip } = params;
11
4
  // ownerShip: compare string values (normalize for comparison)
@@ -1 +1 @@
1
- {"version":3,"file":"settings-sync.js","sourceRoot":"","sources":["../../../src/monitor/settings-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS9C,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAElE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;IACvC,MAAM,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,gBAAgB,GAAG,mBAAmB,KAAK,kBAAkB,CAAC;IACpE,MAAM,kBAAkB,GAAkB,kBAAkB,IAAI,mBAAmB,CAAC;IAEpF,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,CAAC;IACnF,MAAM,YAAY,GAAwB,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC;IAE3E,OAAO;QACL,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,YAAY;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"settings-sync.js","sourceRoot":"","sources":["../../../src/monitor/settings-sync.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS9C,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAElE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;IACvC,MAAM,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,gBAAgB,GAAG,mBAAmB,KAAK,kBAAkB,CAAC;IACpE,MAAM,kBAAkB,GACtB,kBAAkB,IAAI,mBAAmB,CAAC;IAE5C,iFAAiF;IACjF,MAAM,mBAAmB,GACvB,YAAY,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,CAAC;IACzD,MAAM,YAAY,GAAwB,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC;IAE3E,OAAO;QACL,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { normalizeShip } from "../targets.js";
1
+ import { normalizeShip } from '../targets.js';
2
2
  // Extract all cites from message content
3
3
  export function extractCites(content) {
4
4
  if (!content || !Array.isArray(content)) {
@@ -6,32 +6,32 @@ export function extractCites(content) {
6
6
  }
7
7
  const cites = [];
8
8
  for (const verse of content) {
9
- if (verse?.block?.cite && typeof verse.block.cite === "object") {
9
+ if (verse?.block?.cite && typeof verse.block.cite === 'object') {
10
10
  const cite = verse.block.cite;
11
- if (cite.chan && typeof cite.chan === "object") {
11
+ if (cite.chan && typeof cite.chan === 'object') {
12
12
  const { nest, where } = cite.chan;
13
13
  const whereMatch = where?.match(/\/msg\/(~[a-z-]+)\/(.+)/);
14
14
  cites.push({
15
- type: "chan",
15
+ type: 'chan',
16
16
  nest,
17
17
  where,
18
18
  author: whereMatch?.[1],
19
19
  postId: whereMatch?.[2],
20
20
  });
21
21
  }
22
- else if (cite.group && typeof cite.group === "string") {
23
- cites.push({ type: "group", group: cite.group });
22
+ else if (cite.group && typeof cite.group === 'string') {
23
+ cites.push({ type: 'group', group: cite.group });
24
24
  }
25
- else if (cite.desk && typeof cite.desk === "object") {
25
+ else if (cite.desk && typeof cite.desk === 'object') {
26
26
  cites.push({
27
- type: "desk",
27
+ type: 'desk',
28
28
  flag: cite.desk.flag,
29
29
  where: cite.desk.where,
30
30
  });
31
31
  }
32
- else if (cite.bait && typeof cite.bait === "object") {
32
+ else if (cite.bait && typeof cite.bait === 'object') {
33
33
  cites.push({
34
- type: "bait",
34
+ type: 'bait',
35
35
  group: cite.bait.group,
36
36
  nest: cite.bait.graph,
37
37
  where: cite.bait.where,
@@ -43,27 +43,29 @@ export function extractCites(content) {
43
43
  }
44
44
  export function formatModelName(modelString) {
45
45
  if (!modelString) {
46
- return "AI";
46
+ return 'AI';
47
47
  }
48
- const modelName = modelString.includes("/") ? modelString.split("/")[1] : modelString;
48
+ const modelName = modelString.includes('/')
49
+ ? modelString.split('/')[1]
50
+ : modelString;
49
51
  const modelMappings = {
50
- "claude-opus-4-5": "Claude Opus 4.5",
51
- "claude-sonnet-4-5": "Claude Sonnet 4.5",
52
- "claude-sonnet-3-5": "Claude Sonnet 3.5",
53
- "gpt-4o": "GPT-4o",
54
- "gpt-4-turbo": "GPT-4 Turbo",
55
- "gpt-4": "GPT-4",
56
- "gemini-2.0-flash": "Gemini 2.0 Flash",
57
- "gemini-pro": "Gemini Pro",
52
+ 'claude-opus-4-5': 'Claude Opus 4.5',
53
+ 'claude-sonnet-4-5': 'Claude Sonnet 4.5',
54
+ 'claude-sonnet-3-5': 'Claude Sonnet 3.5',
55
+ 'gpt-4o': 'GPT-4o',
56
+ 'gpt-4-turbo': 'GPT-4 Turbo',
57
+ 'gpt-4': 'GPT-4',
58
+ 'gemini-2.0-flash': 'Gemini 2.0 Flash',
59
+ 'gemini-pro': 'Gemini Pro',
58
60
  };
59
61
  if (modelMappings[modelName]) {
60
62
  return modelMappings[modelName];
61
63
  }
62
64
  return modelName
63
- .replace(/-/g, " ")
64
- .split(" ")
65
+ .replace(/-/g, ' ')
66
+ .split(' ')
65
67
  .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
66
- .join(" ");
68
+ .join(' ');
67
69
  }
68
70
  export function isBotMentioned(messageText, botShipName, nickname) {
69
71
  if (!messageText || !botShipName) {
@@ -71,15 +73,15 @@ export function isBotMentioned(messageText, botShipName, nickname) {
71
73
  }
72
74
  // Check for ship mention
73
75
  const normalizedBotShip = normalizeShip(botShipName);
74
- const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
75
- const mentionPattern = new RegExp(`(^|\\s)${escapedShip}(?=\\s|$)`, "i");
76
+ const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
77
+ const mentionPattern = new RegExp(`(^|\\s)${escapedShip}(?=\\s|$)`, 'i');
76
78
  if (mentionPattern.test(messageText)) {
77
79
  return true;
78
80
  }
79
81
  // Check for nickname mention (case-insensitive, word boundary)
80
82
  if (nickname) {
81
- const escapedNickname = nickname.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
82
- const nicknamePattern = new RegExp(`(^|\\s)${escapedNickname}(?=\\s|$|[,!?.])`, "i");
83
+ const escapedNickname = nickname.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
84
+ const nicknamePattern = new RegExp(`(^|\\s)${escapedNickname}(?=\\s|$|[,!?.])`, 'i');
83
85
  if (nicknamePattern.test(messageText)) {
84
86
  return true;
85
87
  }
@@ -98,25 +100,25 @@ export function isBotMentioned(messageText, botShipName, nickname) {
98
100
  */
99
101
  export function shouldEngageInGroup(opts) {
100
102
  if (opts.mentioned) {
101
- return { engage: true, reason: "mention" };
103
+ return { engage: true, reason: 'mention' };
102
104
  }
103
105
  if (opts.inParticipatedThread) {
104
- return { engage: true, reason: "thread" };
106
+ return { engage: true, reason: 'thread' };
105
107
  }
106
108
  if (opts.isOwnerBlob) {
107
- return { engage: true, reason: "owner-blob" };
109
+ return { engage: true, reason: 'owner-blob' };
108
110
  }
109
111
  if (!opts.ownerListenEnabled) {
110
- return { engage: false, reason: "skip" };
112
+ return { engage: false, reason: 'skip' };
111
113
  }
112
114
  const isOwner = opts.ownerShip !== null && opts.senderShip === opts.ownerShip;
113
115
  const isOwned = opts.groupHost !== null &&
114
116
  (opts.groupHost === opts.ownerShip || opts.groupHost === opts.botShipName);
115
117
  const disabled = opts.ownerListenDisabledChannels.has(opts.channelNest);
116
118
  if (isOwner && isOwned && !disabled) {
117
- return { engage: true, reason: "owner-owned" };
119
+ return { engage: true, reason: 'owner-owned' };
118
120
  }
119
- return { engage: false, reason: "skip" };
121
+ return { engage: false, reason: 'skip' };
120
122
  }
121
123
  /** Parse "tlon:group:<nest>" → "<nest>", else null. */
122
124
  export function nestFromCtxFrom(from) {
@@ -138,14 +140,16 @@ export function stripBotMention(messageText, botShipName) {
138
140
  if (!messageText || !botShipName) {
139
141
  return messageText;
140
142
  }
141
- return messageText.replace(normalizeShip(botShipName), "").trim();
143
+ return messageText.replace(normalizeShip(botShipName), '').trim();
142
144
  }
143
145
  export function isDmAllowed(senderShip, allowlist) {
144
146
  if (!allowlist || allowlist.length === 0) {
145
147
  return false;
146
148
  }
147
149
  const normalizedSender = normalizeShip(senderShip);
148
- return allowlist.map((ship) => normalizeShip(ship)).some((ship) => ship === normalizedSender);
150
+ return allowlist
151
+ .map((ship) => normalizeShip(ship))
152
+ .some((ship) => ship === normalizedSender);
149
153
  }
150
154
  /**
151
155
  * Check if a group invite from a ship should be auto-accepted.
@@ -160,24 +164,26 @@ export function isGroupInviteAllowed(inviterShip, allowlist) {
160
164
  return false;
161
165
  }
162
166
  const normalizedInviter = normalizeShip(inviterShip);
163
- return allowlist.map((ship) => normalizeShip(ship)).some((ship) => ship === normalizedInviter);
167
+ return allowlist
168
+ .map((ship) => normalizeShip(ship))
169
+ .some((ship) => ship === normalizedInviter);
164
170
  }
165
171
  // Helper to recursively extract text from inline content
166
172
  function extractInlineText(items) {
167
173
  return items
168
174
  .map((item) => {
169
- if (typeof item === "string") {
175
+ if (typeof item === 'string') {
170
176
  return item;
171
177
  }
172
- if (item && typeof item === "object") {
178
+ if (item && typeof item === 'object') {
173
179
  if (item.ship) {
174
180
  return item.ship;
175
181
  }
176
- if ("sect" in item) {
177
- return `@${item.sect || "all"}`;
182
+ if ('sect' in item) {
183
+ return `@${item.sect || 'all'}`;
178
184
  }
179
- if (item["inline-code"]) {
180
- return `\`${item["inline-code"]}\``;
185
+ if (item['inline-code']) {
186
+ return `\`${item['inline-code']}\``;
181
187
  }
182
188
  if (item.code) {
183
189
  return `\`${item.code}\``;
@@ -195,13 +201,13 @@ function extractInlineText(items) {
195
201
  return `~~${extractInlineText(item.strike)}~~`;
196
202
  }
197
203
  }
198
- return "";
204
+ return '';
199
205
  })
200
- .join("");
206
+ .join('');
201
207
  }
202
208
  export function extractMessageText(content) {
203
209
  if (!content || !Array.isArray(content)) {
204
- return "";
210
+ return '';
205
211
  }
206
212
  return content
207
213
  .map((verse) => {
@@ -209,26 +215,26 @@ export function extractMessageText(content) {
209
215
  if (verse.inline && Array.isArray(verse.inline)) {
210
216
  return verse.inline
211
217
  .map((item) => {
212
- if (typeof item === "string") {
218
+ if (typeof item === 'string') {
213
219
  return item;
214
220
  }
215
- if (item && typeof item === "object") {
221
+ if (item && typeof item === 'object') {
216
222
  if (item.ship) {
217
223
  return item.ship;
218
224
  }
219
225
  // Handle sect (role mentions like @all)
220
- if ("sect" in item) {
221
- return `@${item.sect || "all"}`;
226
+ if ('sect' in item) {
227
+ return `@${item.sect || 'all'}`;
222
228
  }
223
229
  if (item.break !== undefined) {
224
- return "\n";
230
+ return '\n';
225
231
  }
226
232
  if (item.link && item.link.href) {
227
233
  return item.link.href;
228
234
  }
229
235
  // Handle inline code (Tlon uses "inline-code" key)
230
- if (item["inline-code"]) {
231
- return `\`${item["inline-code"]}\``;
236
+ if (item['inline-code']) {
237
+ return `\`${item['inline-code']}\``;
232
238
  }
233
239
  if (item.code) {
234
240
  return `\`${item.code}\``;
@@ -248,36 +254,36 @@ export function extractMessageText(content) {
248
254
  return `> ${extractInlineText(item.blockquote)}`;
249
255
  }
250
256
  }
251
- return "";
257
+ return '';
252
258
  })
253
- .join("");
259
+ .join('');
254
260
  }
255
261
  // Handle block content (images, code blocks, etc.)
256
- if (verse.block && typeof verse.block === "object") {
262
+ if (verse.block && typeof verse.block === 'object') {
257
263
  const block = verse.block;
258
264
  // Image blocks
259
265
  if (block.image && block.image.src) {
260
- const alt = block.image.alt ? ` (${block.image.alt})` : "";
266
+ const alt = block.image.alt ? ` (${block.image.alt})` : '';
261
267
  return `\n${block.image.src}${alt}\n`;
262
268
  }
263
269
  // Code blocks
264
- if (block.code && typeof block.code === "object") {
265
- const lang = block.code.lang || "";
266
- const code = block.code.code || "";
270
+ if (block.code && typeof block.code === 'object') {
271
+ const lang = block.code.lang || '';
272
+ const code = block.code.code || '';
267
273
  return `\n\`\`\`${lang}\n${code}\n\`\`\`\n`;
268
274
  }
269
275
  // Header blocks
270
- if (block.header && typeof block.header === "object") {
276
+ if (block.header && typeof block.header === 'object') {
271
277
  const text = block.header.content
272
- ?.map((item) => (typeof item === "string" ? item : ""))
273
- .join("") || "";
278
+ ?.map((item) => (typeof item === 'string' ? item : ''))
279
+ .join('') || '';
274
280
  return `\n## ${text}\n`;
275
281
  }
276
282
  // Cite/quote blocks - parse the reference structure
277
- if (block.cite && typeof block.cite === "object") {
283
+ if (block.cite && typeof block.cite === 'object') {
278
284
  const cite = block.cite;
279
285
  // ChanCite - reference to a channel message
280
- if (cite.chan && typeof cite.chan === "object") {
286
+ if (cite.chan && typeof cite.chan === 'object') {
281
287
  const { nest, where } = cite.chan;
282
288
  // where is typically /msg/~author/timestamp
283
289
  const whereMatch = where?.match(/\/msg\/(~[a-z-]+)\/(.+)/);
@@ -288,23 +294,23 @@ export function extractMessageText(content) {
288
294
  return `\n> [quoted from ${nest}]\n`;
289
295
  }
290
296
  // GroupCite - reference to a group
291
- if (cite.group && typeof cite.group === "string") {
297
+ if (cite.group && typeof cite.group === 'string') {
292
298
  return `\n> [ref: group ${cite.group}]\n`;
293
299
  }
294
300
  // DeskCite - reference to an app/desk
295
- if (cite.desk && typeof cite.desk === "object") {
301
+ if (cite.desk && typeof cite.desk === 'object') {
296
302
  return `\n> [ref: ${cite.desk.flag}]\n`;
297
303
  }
298
304
  // BaitCite - reference with group+graph context
299
- if (cite.bait && typeof cite.bait === "object") {
305
+ if (cite.bait && typeof cite.bait === 'object') {
300
306
  return `\n> [ref: ${cite.bait.graph} in ${cite.bait.group}]\n`;
301
307
  }
302
308
  return `\n> [quoted message]\n`;
303
309
  }
304
310
  }
305
- return "";
311
+ return '';
306
312
  })
307
- .join("\n")
313
+ .join('\n')
308
314
  .trim();
309
315
  }
310
316
  export function isSummarizationRequest(messageText) {
@@ -342,9 +348,9 @@ export function sanitizeMessageText(text) {
342
348
  return text;
343
349
  }
344
350
  // Strip [BLOCK_USER: ~ship | reason] directives entirely
345
- let sanitized = text.replace(/\[BLOCK_USER:\s*~[\w-]+\s*\|\s*.+?\]/gi, "");
351
+ let sanitized = text.replace(/\[BLOCK_USER:\s*~[\w-]+\s*\|\s*.+?\]/gi, '');
346
352
  // Convert role tags from [brackets] to (parentheses)
347
- sanitized = sanitized.replace(/\[(owner|user|admin|system)\]/gi, "($1)");
353
+ sanitized = sanitized.replace(/\[(owner|user|admin|system)\]/gi, '($1)');
348
354
  return sanitized;
349
355
  }
350
356
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,6 @@
1
- /**
2
- * Pure decisioning helpers for the re-engagement nudge scheduler.
3
- *
4
- * All functions here are deterministic and do not perform I/O. The
5
- * scheduler uses them to compute whether a tick should send anything.
6
- */
7
- export const DEFAULT_ACTIVE_HOURS_START = "09:00";
8
- export const DEFAULT_ACTIVE_HOURS_END = "21:00";
9
- export const DEFAULT_ACTIVE_HOURS_TIMEZONE = "America/New_York";
1
+ export const DEFAULT_ACTIVE_HOURS_START = '09:00';
2
+ export const DEFAULT_ACTIVE_HOURS_END = '21:00';
3
+ export const DEFAULT_ACTIVE_HOURS_TIMEZONE = 'America/New_York';
10
4
  const ONE_DAY_MS = 24 * 60 * 60 * 1000;
11
5
  /** Whole 24-hour days between two absolute instants. */
12
6
  export function daysBetween(earlierMs, laterMs) {
@@ -39,11 +33,11 @@ export function computeTargetStage(daysIdle) {
39
33
  const ACTIVE_HOURS_TIME_PATTERN = /^(?:([01]\d|2[0-3]):([0-5]\d)|24:00)$/;
40
34
  function resolveUserTimezone(cfg) {
41
35
  const configured = cfg?.agents?.defaults?.userTimezone;
42
- if (typeof configured === "string") {
36
+ if (typeof configured === 'string') {
43
37
  const trimmed = configured.trim();
44
38
  if (trimmed) {
45
39
  try {
46
- new Intl.DateTimeFormat("en-US", { timeZone: trimmed }).format(new Date());
40
+ new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
47
41
  return trimmed;
48
42
  }
49
43
  catch {
@@ -51,18 +45,18 @@ function resolveUserTimezone(cfg) {
51
45
  }
52
46
  }
53
47
  }
54
- return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || "UTC";
48
+ return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || 'UTC';
55
49
  }
56
50
  function resolveActiveHoursTimezone(cfg, raw) {
57
- const trimmed = typeof raw === "string" ? raw.trim() : "";
58
- if (!trimmed || trimmed === "user") {
51
+ const trimmed = typeof raw === 'string' ? raw.trim() : '';
52
+ if (!trimmed || trimmed === 'user') {
59
53
  return resolveUserTimezone(cfg);
60
54
  }
61
- if (trimmed === "local") {
62
- return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || "UTC";
55
+ if (trimmed === 'local') {
56
+ return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || 'UTC';
63
57
  }
64
58
  try {
65
- new Intl.DateTimeFormat("en-US", { timeZone: trimmed }).format(new Date());
59
+ new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
66
60
  return trimmed;
67
61
  }
68
62
  catch {
@@ -70,14 +64,14 @@ function resolveActiveHoursTimezone(cfg, raw) {
70
64
  }
71
65
  }
72
66
  function parseActiveHoursTime(raw, opts) {
73
- if (typeof raw !== "string") {
67
+ if (typeof raw !== 'string') {
74
68
  return null;
75
69
  }
76
70
  const trimmed = raw.trim();
77
71
  if (!ACTIVE_HOURS_TIME_PATTERN.test(trimmed)) {
78
72
  return null;
79
73
  }
80
- const [hourStr, minuteStr] = trimmed.split(":");
74
+ const [hourStr, minuteStr] = trimmed.split(':');
81
75
  const hour = Number(hourStr);
82
76
  const minute = Number(minuteStr);
83
77
  if (!Number.isFinite(hour) || !Number.isFinite(minute)) {
@@ -98,7 +92,7 @@ function parseActiveHoursTime(raw, opts) {
98
92
  * precedence tier's value for that field.
99
93
  */
100
94
  function overlayActiveHoursTime(raw, opts) {
101
- if (typeof raw !== "string") {
95
+ if (typeof raw !== 'string') {
102
96
  return null;
103
97
  }
104
98
  const trimmed = raw.trim();
@@ -117,21 +111,21 @@ function overlayActiveHoursTime(raw, opts) {
117
111
  * caller falls through to the baseline timezone in that case.
118
112
  */
119
113
  function overlayActiveHoursTimezone(cfg, raw) {
120
- if (typeof raw !== "string") {
114
+ if (typeof raw !== 'string') {
121
115
  return null;
122
116
  }
123
117
  const trimmed = raw.trim();
124
118
  if (!trimmed) {
125
119
  return null;
126
120
  }
127
- if (trimmed === "user") {
121
+ if (trimmed === 'user') {
128
122
  return resolveUserTimezone(cfg);
129
123
  }
130
- if (trimmed === "local") {
124
+ if (trimmed === 'local') {
131
125
  return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || null;
132
126
  }
133
127
  try {
134
- new Intl.DateTimeFormat("en-US", { timeZone: trimmed }).format(new Date());
128
+ new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
135
129
  return trimmed;
136
130
  }
137
131
  catch {
@@ -142,8 +136,8 @@ function activeHoursFromShape(cfg, raw) {
142
136
  if (!raw) {
143
137
  return null;
144
138
  }
145
- const start = typeof raw.start === "string" ? raw.start.trim() : undefined;
146
- const end = typeof raw.end === "string" ? raw.end.trim() : undefined;
139
+ const start = typeof raw.start === 'string' ? raw.start.trim() : undefined;
140
+ const end = typeof raw.end === 'string' ? raw.end.trim() : undefined;
147
141
  if (!start || !end) {
148
142
  return null;
149
143
  }
@@ -159,15 +153,16 @@ function activeHoursFromShape(cfg, raw) {
159
153
  }
160
154
  function activeHoursFromChannelsTlon(cfg) {
161
155
  const tlon = cfg?.channels?.tlon;
162
- const raw = tlon?.nudgeActiveHours;
163
- if (!raw || typeof raw !== "object") {
156
+ const raw = tlon
157
+ ?.nudgeActiveHours;
158
+ if (!raw || typeof raw !== 'object') {
164
159
  return null;
165
160
  }
166
161
  return activeHoursFromShape(cfg, raw);
167
162
  }
168
163
  function activeHoursFromFileConfig(cfg) {
169
164
  const agentsDefaults = cfg?.agents?.defaults?.heartbeat?.activeHours;
170
- if (!agentsDefaults || typeof agentsDefaults !== "object") {
165
+ if (!agentsDefaults || typeof agentsDefaults !== 'object') {
171
166
  return null;
172
167
  }
173
168
  return activeHoursFromShape(cfg, agentsDefaults);
@@ -200,7 +195,9 @@ export function resolveActiveHours(settings, cfg) {
200
195
  end: DEFAULT_ACTIVE_HOURS_END,
201
196
  timezone: DEFAULT_ACTIVE_HOURS_TIMEZONE,
202
197
  };
203
- const startOverride = overlayActiveHoursTime(settings.nudgeActiveHoursStart, { allow24: false });
198
+ const startOverride = overlayActiveHoursTime(settings.nudgeActiveHoursStart, {
199
+ allow24: false,
200
+ });
204
201
  const endOverride = overlayActiveHoursTime(settings.nudgeActiveHoursEnd, {
205
202
  allow24: true,
206
203
  });
@@ -215,33 +212,33 @@ export function resolveActiveHours(settings, cfg) {
215
212
  * Derive "HH:MM" for `date` in the given IANA timezone.
216
213
  */
217
214
  function formatLocalHhMm(date, timezone) {
218
- const fmt = new Intl.DateTimeFormat("en-GB", {
215
+ const fmt = new Intl.DateTimeFormat('en-GB', {
219
216
  timeZone: timezone,
220
- hour: "2-digit",
221
- minute: "2-digit",
217
+ hour: '2-digit',
218
+ minute: '2-digit',
222
219
  hour12: false,
223
220
  });
224
221
  const parts = fmt.formatToParts(date);
225
- let hh = "00";
226
- let mm = "00";
222
+ let hh = '00';
223
+ let mm = '00';
227
224
  for (const part of parts) {
228
- if (part.type === "hour") {
225
+ if (part.type === 'hour') {
229
226
  hh = part.value;
230
227
  }
231
- if (part.type === "minute") {
228
+ if (part.type === 'minute') {
232
229
  mm = part.value;
233
230
  }
234
231
  }
235
232
  // `Intl.DateTimeFormat` with `hour12: false` can yield "24:00" at midnight
236
233
  // on some engines; normalize to "00:00" for comparison consistency.
237
- if (hh === "24") {
238
- hh = "00";
234
+ if (hh === '24') {
235
+ hh = '00';
239
236
  }
240
237
  return `${hh}:${mm}`;
241
238
  }
242
239
  function resolveMinutesInTimeZone(date, timezone) {
243
240
  const local = formatLocalHhMm(date, timezone);
244
- const [hourStr, minuteStr] = local.split(":");
241
+ const [hourStr, minuteStr] = local.split(':');
245
242
  const hour = Number(hourStr);
246
243
  const minute = Number(minuteStr);
247
244
  if (!Number.isFinite(hour) || !Number.isFinite(minute)) {
@@ -282,13 +279,13 @@ export function inActiveHours(date, activeHours) {
282
279
  * message and cannot lag behind a subscription-delivered clear.
283
280
  */
284
281
  export function resolveLastOwnerInstant(shadow, settings) {
285
- if (shadow && typeof shadow.at === "number" && Number.isFinite(shadow.at)) {
282
+ if (shadow && typeof shadow.at === 'number' && Number.isFinite(shadow.at)) {
286
283
  return shadow.at;
287
284
  }
288
- if (typeof settings.lastOwnerMessageAt === "number") {
285
+ if (typeof settings.lastOwnerMessageAt === 'number') {
289
286
  return settings.lastOwnerMessageAt;
290
287
  }
291
- if (typeof settings.lastOwnerMessageDate === "string") {
288
+ if (typeof settings.lastOwnerMessageDate === 'string') {
292
289
  const parsed = Date.parse(settings.lastOwnerMessageDate);
293
290
  return Number.isFinite(parsed) ? parsed : null;
294
291
  }