gestalt-mobile 0.42.0 → 0.43.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 (40) hide show
  1. package/README.md +56 -0
  2. package/dist/client/assets/index-5-CmBBPG.css +1 -0
  3. package/dist/client/assets/index-BLgr7z1T.js +107 -0
  4. package/dist/client/index.html +2 -2
  5. package/dist/server/server/app.js +2 -3
  6. package/dist/server/server/composition.contracts.js +27 -0
  7. package/dist/server/server/composition.js +10 -2
  8. package/dist/server/server/features/agent-activity/registry.js +4 -0
  9. package/dist/server/server/features/autopilot/application/policy.js +42 -1
  10. package/dist/server/server/features/catalog/get-bootstrap/use-case.js +11 -0
  11. package/dist/server/server/features/catalog/register-routes.js +13 -0
  12. package/dist/server/server/features/catalog/session-defaults/endpoint.js +16 -0
  13. package/dist/server/server/features/files/check-references/endpoint.js +36 -0
  14. package/dist/server/server/features/files/read-entry/endpoint.js +28 -0
  15. package/dist/server/server/features/files/register-routes.js +4 -0
  16. package/dist/server/server/features/plans/application/parse-supervised-plan.js +11 -0
  17. package/dist/server/server/features/plans/archive-workspace-plan/endpoint.js +26 -0
  18. package/dist/server/server/features/plans/list-workspace-plans/endpoint.js +1 -1
  19. package/dist/server/server/features/plans/register-routes.js +6 -0
  20. package/dist/server/server/features/sessions/model/relay-session.js +2 -0
  21. package/dist/server/server/features/sessions/start-session/endpoint.js +6 -0
  22. package/dist/server/server/features/sessions/start-session/request.js +4 -0
  23. package/dist/server/server/features/sessions/start-session/use-case.js +12 -0
  24. package/dist/server/server/platform/catalog/filesystem-workspace-catalog.js +3 -0
  25. package/dist/server/server/platform/codex/recent-thread-lister.js +2 -1
  26. package/dist/server/server/platform/codex/session-model-config.js +104 -0
  27. package/dist/server/server/platform/codex/session-runtime.js +33 -13
  28. package/dist/server/server/platform/filesystem/filesystem-workspace-files.js +99 -0
  29. package/dist/server/server/platform/persistence/filesystem-session-defaults.js +42 -0
  30. package/dist/server/server/platform/persistence/migrate.js +2 -0
  31. package/dist/server/server/platform/persistence/sqlite-session-repository.js +7 -2
  32. package/dist/server/server/platform/plans/filesystem-plan-archiver.js +109 -0
  33. package/dist/server/server/platform/plans/filesystem-workspace-plan-catalog.js +96 -68
  34. package/dist/server/server/platform/plans/org-plan-archive-tag.js +17 -0
  35. package/dist/server/server/platform/plans/org-plan-discovery.js +53 -0
  36. package/dist/server/shared/contracts/session-defaults.js +20 -0
  37. package/dist/server/shared/contracts/session-model-settings.js +6 -0
  38. package/package.json +3 -1
  39. package/dist/client/assets/index-BRly-q56.js +0 -38
  40. package/dist/client/assets/index-D57mr3B1.css +0 -1
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ import { execFile } from 'node:child_process';
7
+ import { promisify } from 'node:util';
8
+ const execute = promisify(execFile);
9
+ async function run(command, args, cwd) {
10
+ try {
11
+ const result = await execute(command, [...args], {
12
+ cwd,
13
+ encoding: 'utf8',
14
+ maxBuffer: 64 * 1024 * 1024,
15
+ timeout: 30_000,
16
+ });
17
+ return result.stdout;
18
+ }
19
+ catch (error) {
20
+ const failure = error;
21
+ // Permission errors in one branch must not hide readable plans elsewhere.
22
+ if (failure.code === 1 && !failure.killed && typeof failure.stdout === 'string')
23
+ return failure.stdout;
24
+ throw error;
25
+ }
26
+ }
27
+ /** Native, NUL-delimited discovery; never invokes a shell or follows symlinks. */
28
+ export class OrgPlanDiscovery {
29
+ execute;
30
+ command = 'bfs';
31
+ constructor(execute = run) {
32
+ this.execute = execute;
33
+ }
34
+ async list(workspace) {
35
+ const args = ['.', '-type', 'f', '-name', '*.org', '-path', '*/.gestalt/*', '-print0'];
36
+ let output;
37
+ try {
38
+ output = await this.execute(this.command, args, workspace);
39
+ }
40
+ catch (error) {
41
+ if (this.command !== 'bfs' || error.code !== 'ENOENT')
42
+ throw error;
43
+ this.command = 'find';
44
+ output = await this.execute('find', args, workspace);
45
+ }
46
+ return [
47
+ ...new Set(output
48
+ .split('\0')
49
+ .filter(Boolean)
50
+ .map((path) => path.replace(/^\.\//, ''))),
51
+ ];
52
+ }
53
+ }
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ import { z } from 'zod';
7
+ import { thinkingLevels } from './session-model-settings.js';
8
+ export const sessionDefaultsSchema = z
9
+ .object({
10
+ workspaceId: z.string().max(4096),
11
+ skillProfile: z.string().max(256),
12
+ provider: z.enum(['codex', 'kimi']),
13
+ model: z.string().min(1).max(256),
14
+ reasoningEffort: z.enum(thinkingLevels).default('medium'),
15
+ executorModel: z.string().trim().min(1).max(256).default('gpt-5.6-terra'),
16
+ executorReasoningEffort: z.enum(thinkingLevels).default('high'),
17
+ sandbox: z.enum(['workspace-git', 'workspace-write', 'read-only', 'danger-full-access']),
18
+ approvalPolicy: z.enum(['untrusted', 'on-request', 'never']),
19
+ })
20
+ .strict();
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (C) 2026 Dyne.org foundation
3
+ * Designed by Denis Roio <jaromil@dyne.org>
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ export const thinkingLevels = ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gestalt-mobile",
3
- "version": "0.42.0",
3
+ "version": "0.43.0",
4
4
  "description": "Mobile-first web relay for durable Codex development sessions",
5
5
  "keywords": [
6
6
  "codex",
@@ -72,7 +72,9 @@
72
72
  "@fontsource/syne": "5.2.7",
73
73
  "@simplewebauthn/browser": "13.3.0",
74
74
  "@simplewebauthn/server": "13.3.2",
75
+ "dompurify": "^3.4.16",
75
76
  "fastify": "^5.12.3",
77
+ "marked": "^18.0.14",
76
78
  "qrcode": "^1.5.4",
77
79
  "ws": "^8.21.0",
78
80
  "yaml": "^2.9.0",