@songsid/agend 2.3.4-beta.9 → 2.3.4

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 (75) hide show
  1. package/dist/auth-api.js +5 -0
  2. package/dist/auth-api.js.map +1 -1
  3. package/dist/backend/codex-metadata.d.ts +14 -0
  4. package/dist/backend/codex-metadata.js +45 -0
  5. package/dist/backend/codex-metadata.js.map +1 -1
  6. package/dist/backend/codex-speed.d.ts +14 -0
  7. package/dist/backend/codex-speed.js +35 -0
  8. package/dist/backend/codex-speed.js.map +1 -0
  9. package/dist/backend/codex.js +9 -2
  10. package/dist/backend/codex.js.map +1 -1
  11. package/dist/backend/kiro.js +11 -1
  12. package/dist/backend/kiro.js.map +1 -1
  13. package/dist/cache-ledger.d.ts +10 -0
  14. package/dist/cache-ledger.js +49 -12
  15. package/dist/cache-ledger.js.map +1 -1
  16. package/dist/channel/adapters/telegram.d.ts +51 -0
  17. package/dist/channel/adapters/telegram.js +231 -14
  18. package/dist/channel/adapters/telegram.js.map +1 -1
  19. package/dist/channel/types.d.ts +2 -0
  20. package/dist/config-validator.js +5 -0
  21. package/dist/config-validator.js.map +1 -1
  22. package/dist/fleet-manager.d.ts +11 -0
  23. package/dist/fleet-manager.js +90 -10
  24. package/dist/fleet-manager.js.map +1 -1
  25. package/dist/general-knowledge/skills/concepts/SKILL.md +3 -0
  26. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +7 -2
  27. package/dist/instance-config-impact.js +2 -0
  28. package/dist/instance-config-impact.js.map +1 -1
  29. package/dist/locale.js +10 -0
  30. package/dist/locale.js.map +1 -1
  31. package/dist/log-service.d.ts +28 -0
  32. package/dist/log-service.js +29 -0
  33. package/dist/log-service.js.map +1 -1
  34. package/dist/logger.d.ts +12 -0
  35. package/dist/logger.js +43 -1
  36. package/dist/logger.js.map +1 -1
  37. package/dist/missed-offline.d.ts +25 -0
  38. package/dist/missed-offline.js +79 -0
  39. package/dist/missed-offline.js.map +1 -0
  40. package/dist/needs-you-hub.d.ts +6 -1
  41. package/dist/needs-you-hub.js +30 -7
  42. package/dist/needs-you-hub.js.map +1 -1
  43. package/dist/needs-you.d.ts +16 -2
  44. package/dist/needs-you.js +9 -1
  45. package/dist/needs-you.js.map +1 -1
  46. package/dist/settings-api.js +10 -0
  47. package/dist/settings-api.js.map +1 -1
  48. package/dist/settings-change.js +16 -1
  49. package/dist/settings-change.js.map +1 -1
  50. package/dist/settings-instance-patch.js +27 -0
  51. package/dist/settings-instance-patch.js.map +1 -1
  52. package/dist/ui/chat-md-strings.js +9 -0
  53. package/dist/ui/chat-thread.js +53 -3
  54. package/dist/ui/panel-chat.js +3 -2
  55. package/dist/ui/panel-needs.js +13 -5
  56. package/dist/ui/preview-panel.js +78 -2
  57. package/dist/ui/settings-codex-copy.js +19 -0
  58. package/dist/ui/settings-dialogs.js +8 -0
  59. package/dist/ui/settings-model.js +16 -2
  60. package/dist/ui/shared/app-i18n.js +2 -2
  61. package/dist/ui/shared/app.css +4 -0
  62. package/dist/ui/shared/panel-view.js +77 -4
  63. package/dist/ui/shared/view-history.css +17 -0
  64. package/dist/ui/shared/view-history.js +438 -0
  65. package/dist/usage-rollup.d.ts +2 -0
  66. package/dist/usage-rollup.js +9 -6
  67. package/dist/usage-rollup.js.map +1 -1
  68. package/dist/view-api.d.ts +16 -0
  69. package/dist/view-api.js +100 -16
  70. package/dist/view-api.js.map +1 -1
  71. package/dist/view-history.d.ts +84 -0
  72. package/dist/view-history.js +116 -0
  73. package/dist/view-history.js.map +1 -0
  74. package/launcher/private-home.cjs +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ export const VIEW_HISTORY_PAGE = 100;
2
+ /** A result over `lines` lines keeps `keep`; a diff over `diffRows` rows keeps `diffKeep`; kept text at most `chars`. */
3
+ export const VIEW_FOLD = { lines: 5, keep: 3, diffRows: 10, diffKeep: 6, chars: 600 };
4
+ /** The query's own parts from a URL's search params (anything malformed is left out: the newest page). */
5
+ export function viewHistoryQuery(params) {
6
+ const offset = (v) => (v !== null && /^\d{1,15}$/.test(v) ? Number(v) : undefined);
7
+ const q = {};
8
+ const before = offset(params.get("before")), end = offset(params.get("end"));
9
+ const key = params.get("key"), step = params.get("step");
10
+ if (before !== undefined)
11
+ q.before = before;
12
+ if (end !== undefined)
13
+ q.end = end;
14
+ if (key && /^\d{1,20}-\d{1,20}$/.test(key))
15
+ q.key = key;
16
+ if (step && step.length <= 200 && /^[\w.:-]+$/.test(step))
17
+ q.step = step;
18
+ return q;
19
+ }
20
+ /** Null: no such instance. */
21
+ export async function viewHistory(read, name, q) {
22
+ if (q.step !== undefined) {
23
+ if (q.end === undefined)
24
+ return { view_history: 1, supported: false, reason: "bad_request" };
25
+ const back = await read(name, { end: q.end, ...(q.key !== undefined ? { key: q.key } : {}), limit: VIEW_HISTORY_PAGE });
26
+ if (!back)
27
+ return null;
28
+ if (back.format !== "claude" || back.steps === undefined)
29
+ return { view_history: 1, supported: false, reason: back.reason ?? "unsupported" };
30
+ // Another transcript now (a new session), or past its end: the step is not there to give whole.
31
+ if (back.reset)
32
+ return { view_history: 1, supported: true, key: back.key, step: null };
33
+ const found = back.steps.find((s) => s.id === q.step);
34
+ return { view_history: 1, supported: true, key: back.key, step: found ? viewStep(found, false) : null };
35
+ }
36
+ const back = await read(name, { ...(q.before !== undefined ? { end: q.before } : {}), ...(q.key !== undefined ? { key: q.key } : {}), limit: VIEW_HISTORY_PAGE });
37
+ if (!back)
38
+ return null;
39
+ if (back.format !== "claude" || back.steps === undefined)
40
+ return { view_history: 1, supported: false, reason: back.reason ?? "unsupported" };
41
+ const steps = back.steps.map((s) => viewStep(s, true)).filter((s) => s !== null);
42
+ return { view_history: 1, supported: true, key: back.key, steps, before: back.before, end: back.end, ...(back.reset ? { reset: true } : {}) };
43
+ }
44
+ /** A Log step as the View draws it (null: not drawn); `fold`: long results and diffs keep their start. */
45
+ export function viewStep(s, fold) {
46
+ if (s.kind === "user" || s.kind === "assistant") {
47
+ if (!s.body)
48
+ return null;
49
+ return { id: s.id, kind: s.kind, body: s.body, ...(s.bodyCut ? { cut: s.bodyCut } : {}) };
50
+ }
51
+ if (s.kind === "error")
52
+ return { id: s.id, kind: "error", ...folded(s.body ?? s.note ?? "", fold), ...(s.bodyCut ? { cut: s.bodyCut } : {}) };
53
+ if (s.kind !== "tool")
54
+ return null;
55
+ const step = { id: s.id, kind: "tool", tool: s.tool ?? "", ...(s.subject ? { subject: s.subject } : {}), ...(s.status ? { status: s.status } : {}) };
56
+ const diff = s.status !== "failed" ? diffOf(s.tool ?? "", s.input) : null;
57
+ if (diff) {
58
+ const rows = diff.reduce((n, h) => n + h.del.length + h.add.length, 0);
59
+ if (!fold || rows <= VIEW_FOLD.diffRows)
60
+ return { ...step, diff };
61
+ let left = VIEW_FOLD.diffKeep;
62
+ const kept = [];
63
+ for (const h of diff) {
64
+ if (left <= 0)
65
+ break;
66
+ const del = h.del.slice(0, left);
67
+ left -= del.length;
68
+ const add = h.add.slice(0, Math.max(0, left));
69
+ left -= add.length;
70
+ kept.push({ del, add });
71
+ }
72
+ return { ...step, diff: kept, more: rows - VIEW_FOLD.diffKeep };
73
+ }
74
+ const body = clean(s.body ?? "");
75
+ return { ...step, ...(body ? folded(body, fold) : {}), ...(s.bodyCut ? { cut: s.bodyCut } : {}) };
76
+ }
77
+ /** A tool's error comes wrapped (`<tool_use_error>…</tool_use_error>`): the page shows its words. */
78
+ function clean(text) { return text.replace(/^<tool_use_error>([\s\S]*?)<\/tool_use_error>$/, "$1").replace(/\n+$/, ""); }
79
+ function folded(text, fold) {
80
+ const lines = text.split("\n");
81
+ if (!fold)
82
+ return { body: text };
83
+ let keep = lines.length > VIEW_FOLD.lines ? lines.slice(0, VIEW_FOLD.keep) : lines;
84
+ let more = lines.length - keep.length;
85
+ let body = keep.join("\n");
86
+ if (body.length > VIEW_FOLD.chars) {
87
+ body = body.slice(0, VIEW_FOLD.chars);
88
+ keep = body.split("\n");
89
+ more = Math.max(1, lines.length - keep.length + 1);
90
+ }
91
+ return { body, ...(more > 0 ? { more } : {}) };
92
+ }
93
+ /** An edit's change from its arguments (Edit, MultiEdit, Write), or null — also when the arguments were cut. */
94
+ function diffOf(tool, input) {
95
+ if (!input || !["Edit", "MultiEdit", "Write"].includes(tool))
96
+ return null;
97
+ let args;
98
+ try {
99
+ args = JSON.parse(input);
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ const lines = (v) => (typeof v === "string" && v !== "" ? v.replace(/\n$/, "").split("\n") : []);
105
+ if (tool === "Write")
106
+ return typeof args.content === "string" ? [{ del: [], add: lines(args.content) }] : null;
107
+ const edits = tool === "MultiEdit" ? (Array.isArray(args.edits) ? args.edits : null) : [args];
108
+ if (!edits)
109
+ return null;
110
+ const hunks = edits
111
+ .filter((e) => !!e && typeof e === "object")
112
+ .map((e) => ({ del: lines(e.old_string), add: lines(e.new_string) }))
113
+ .filter((h) => h.del.length || h.add.length);
114
+ return hunks.length ? hunks : null;
115
+ }
116
+ //# sourceMappingURL=view-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-history.js","sourceRoot":"","sources":["../src/view-history.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ function ensurePrivateHome(dir, options) {
32
32
  if (opts.afterOpen) opts.afterOpen(); // test seam: replacement at the check/change boundary
33
33
  var info = io.fstatSync(fd), current = checkedPath(dir, io, false, message);
34
34
  if (!info.isDirectory() || info.uid !== uid || current.dev !== info.dev || current.ino !== info.ino) throw new Error(message);
35
- if (info.mode & 18) { // 0022: repair affected 0775/0777 homes; existing non-writable roots keep their mode
35
+ if (info.mode & 63) { // 0077: an owned home is private: repair legacy 0755/0775/0777 homes to 0700
36
36
  io.fchmodSync(fd, 448);
37
37
  if ((io.fstatSync(fd).mode & 511) !== 448) throw new Error(message);
38
38
  (opts.log || function (line) { console.warn(line); })("AgEnD: tightened owned AGEND_HOME permissions to 0700.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@songsid/agend",
3
- "version": "2.3.4-beta.9",
3
+ "version": "2.3.4",
4
4
  "description": "Multi-agent fleet daemon — run coding CLIs (Claude, Muse, Codex, OpenCode) from Discord or Telegram",
5
5
  "type": "module",
6
6
  "bin": {