@moxt-ai/mobius 0.0.26 → 0.0.28

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 (52) hide show
  1. package/dist/acp/activity.d.ts +1 -0
  2. package/dist/acp/activity.d.ts.map +1 -1
  3. package/dist/acp/activity.js +14 -1
  4. package/dist/acp/activity.js.map +1 -1
  5. package/dist/acp/session-history.d.ts.map +1 -1
  6. package/dist/acp/session-history.js +10 -16
  7. package/dist/acp/session-history.js.map +1 -1
  8. package/dist/acp/session-manager.d.ts +7 -0
  9. package/dist/acp/session-manager.d.ts.map +1 -1
  10. package/dist/acp/session-manager.js +65 -11
  11. package/dist/acp/session-manager.js.map +1 -1
  12. package/dist/agent-catalog/publish-agent-catalog.js +3 -3
  13. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -1
  14. package/dist/artifacts/runtime-artifact-uploader.d.ts +12 -0
  15. package/dist/artifacts/runtime-artifact-uploader.d.ts.map +1 -0
  16. package/dist/artifacts/runtime-artifact-uploader.js +157 -0
  17. package/dist/artifacts/runtime-artifact-uploader.js.map +1 -0
  18. package/dist/authorization/local-raster.d.ts +10 -0
  19. package/dist/authorization/local-raster.d.ts.map +1 -0
  20. package/dist/authorization/local-raster.js +134 -0
  21. package/dist/authorization/local-raster.js.map +1 -0
  22. package/dist/cli.js +1644 -235
  23. package/dist/cli.js.map +4 -4
  24. package/dist/index.js +1652 -251
  25. package/dist/index.js.map +4 -4
  26. package/dist/native-sessions/codex-history.d.ts.map +1 -1
  27. package/dist/native-sessions/codex-history.js +11 -11
  28. package/dist/native-sessions/codex-history.js.map +1 -1
  29. package/dist/native-sessions/history-images.d.ts +3 -0
  30. package/dist/native-sessions/history-images.d.ts.map +1 -0
  31. package/dist/native-sessions/history-images.js +74 -0
  32. package/dist/native-sessions/history-images.js.map +1 -0
  33. package/dist/prompt-artifact-resolver.d.ts.map +1 -1
  34. package/dist/prompt-artifact-resolver.js +7 -4
  35. package/dist/prompt-artifact-resolver.js.map +1 -1
  36. package/dist/relay-connection/connect.d.ts.map +1 -1
  37. package/dist/relay-connection/connect.js +3 -6
  38. package/dist/relay-connection/connect.js.map +1 -1
  39. package/dist/relay-connection/runtime-authentication.d.ts +3 -0
  40. package/dist/relay-connection/runtime-authentication.d.ts.map +1 -0
  41. package/dist/relay-connection/runtime-authentication.js +14 -0
  42. package/dist/relay-connection/runtime-authentication.js.map +1 -0
  43. package/dist/relay-connection/session-event-outbox.d.ts +32 -2
  44. package/dist/relay-connection/session-event-outbox.d.ts.map +1 -1
  45. package/dist/relay-connection/session-event-outbox.js +362 -11
  46. package/dist/relay-connection/session-event-outbox.js.map +1 -1
  47. package/dist/run-daemon.d.ts.map +1 -1
  48. package/dist/run-daemon.js +297 -24
  49. package/dist/run-daemon.js.map +1 -1
  50. package/dist/runtime.js +1654 -253
  51. package/dist/runtime.js.map +4 -4
  52. package/package.json +2 -1
@@ -0,0 +1,134 @@
1
+ import { readFile, realpath, stat } from "node:fs/promises";
2
+ import { basename, isAbsolute, normalize, relative, sep } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const MAX_LOCAL_RASTER_BYTES = 3_000_000;
5
+ const PNG_SIGNATURE = Uint8Array.of(0x89, 0x50, 0x4e, 0x47);
6
+ const JPEG_SIGNATURE = Uint8Array.of(0xff, 0xd8, 0xff);
7
+ const GIF87_SIGNATURE = new TextEncoder().encode("GIF87a");
8
+ const GIF89_SIGNATURE = new TextEncoder().encode("GIF89a");
9
+ const RIFF_SIGNATURE = new TextEncoder().encode("RIFF");
10
+ const WEBP_SIGNATURE = new TextEncoder().encode("WEBP");
11
+ export class LocalRasterImage {
12
+ bytes;
13
+ mimeType;
14
+ name;
15
+ constructor(name, mimeType, bytes) {
16
+ this.bytes = bytes;
17
+ this.mimeType = mimeType;
18
+ this.name = name;
19
+ }
20
+ base64 = () => Buffer.from(this.bytes).toString("base64");
21
+ }
22
+ function startsWith(bytes, signature, offset = 0) {
23
+ if (bytes.byteLength < offset + signature.byteLength) {
24
+ return false;
25
+ }
26
+ return signature.every((value, index) => bytes[offset + index] === value);
27
+ }
28
+ function sniffRasterMime(bytes) {
29
+ if (startsWith(bytes, PNG_SIGNATURE)) {
30
+ return "image/png";
31
+ }
32
+ if (startsWith(bytes, JPEG_SIGNATURE)) {
33
+ return "image/jpeg";
34
+ }
35
+ if (startsWith(bytes, GIF87_SIGNATURE) || startsWith(bytes, GIF89_SIGNATURE)) {
36
+ return "image/gif";
37
+ }
38
+ if (startsWith(bytes, RIFF_SIGNATURE) && startsWith(bytes, WEBP_SIGNATURE, 8)) {
39
+ return "image/webp";
40
+ }
41
+ return null;
42
+ }
43
+ function isInsideRoot(root, target) {
44
+ const relation = relative(root, target);
45
+ return relation !== ".." && !relation.startsWith(`..${sep}`) && !isAbsolute(relation);
46
+ }
47
+ async function resolveCanonicalPath(requested, signal) {
48
+ signal.throwIfAborted();
49
+ if (!isAbsolute(requested) || requested.includes("\0") || normalize(requested) !== requested) {
50
+ return null;
51
+ }
52
+ try {
53
+ const target = await realpath(requested);
54
+ signal.throwIfAborted();
55
+ if (!isAbsolute(target) || normalize(target) !== target) {
56
+ return null;
57
+ }
58
+ return target;
59
+ }
60
+ catch (cause) {
61
+ signal.throwIfAborted();
62
+ if (cause instanceof Error && cause.name === "AbortError") {
63
+ throw cause;
64
+ }
65
+ return null;
66
+ }
67
+ }
68
+ function parseLocalImageUri(uri) {
69
+ const trimmed = uri.trim();
70
+ if (trimmed.length === 0 || trimmed.length > 2_048 || trimmed.includes("\0")) {
71
+ return null;
72
+ }
73
+ if (trimmed.startsWith("data:")) {
74
+ return null;
75
+ }
76
+ if (trimmed.startsWith("file:")) {
77
+ try {
78
+ const url = new URL(trimmed);
79
+ if (url.protocol !== "file:" || url.host.length > 0) {
80
+ return null;
81
+ }
82
+ return fileURLToPath(url);
83
+ }
84
+ catch {
85
+ return null;
86
+ }
87
+ }
88
+ if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed)) {
89
+ return null;
90
+ }
91
+ return trimmed;
92
+ }
93
+ export async function readAuthorizedRaster(uri, roots, signal) {
94
+ signal.throwIfAborted();
95
+ const requested = parseLocalImageUri(uri);
96
+ if (requested === null) {
97
+ return null;
98
+ }
99
+ const target = await resolveCanonicalPath(requested, signal);
100
+ if (target === null) {
101
+ return null;
102
+ }
103
+ const targetMetadata = await stat(target);
104
+ signal.throwIfAborted();
105
+ if (!targetMetadata.isFile() || targetMetadata.size < 1 || targetMetadata.size > MAX_LOCAL_RASTER_BYTES) {
106
+ return null;
107
+ }
108
+ const authorizedRoots = [];
109
+ for (const root of roots) {
110
+ const directory = await resolveCanonicalPath(root, signal);
111
+ if (directory === null) {
112
+ continue;
113
+ }
114
+ const metadata = await stat(directory);
115
+ signal.throwIfAborted();
116
+ if (metadata.isDirectory()) {
117
+ authorizedRoots.push(directory);
118
+ }
119
+ }
120
+ if (!authorizedRoots.some((root) => isInsideRoot(root, target))) {
121
+ return null;
122
+ }
123
+ const bytes = new Uint8Array(await readFile(target));
124
+ signal.throwIfAborted();
125
+ if (bytes.byteLength < 1 || bytes.byteLength > MAX_LOCAL_RASTER_BYTES) {
126
+ return null;
127
+ }
128
+ const mimeType = sniffRasterMime(bytes);
129
+ if (mimeType === null) {
130
+ return null;
131
+ }
132
+ return new LocalRasterImage(basename(target) || "Image", mimeType, bytes);
133
+ }
134
+ //# sourceMappingURL=local-raster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-raster.js","sourceRoot":"","sources":["../../src/authorization/local-raster.ts"],"names":[],"mappings":"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"}