humanish 0.96.0 → 0.97.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 (81) hide show
  1. package/README.md +4 -1
  2. package/dist/automatic-analysis-config.d.ts +15 -5
  3. package/dist/automatic-analysis-config.js +25 -4
  4. package/dist/automatic-analysis-config.js.map +1 -1
  5. package/dist/automatic-study-analysis.js +4 -2
  6. package/dist/automatic-study-analysis.js.map +1 -1
  7. package/dist/cua-actor-lab.d.ts +18 -286
  8. package/dist/cua-actor-lab.js +151 -1955
  9. package/dist/cua-actor-lab.js.map +1 -1
  10. package/dist/cua-desktop-lane.d.ts +35 -0
  11. package/dist/cua-desktop-lane.js +13 -0
  12. package/dist/cua-desktop-lane.js.map +1 -0
  13. package/dist/desktop-session.d.ts +41 -0
  14. package/dist/desktop-session.js +44 -0
  15. package/dist/desktop-session.js.map +1 -0
  16. package/dist/doctor-lab.d.ts +6 -1
  17. package/dist/doctor-lab.js +17 -3
  18. package/dist/doctor-lab.js.map +1 -1
  19. package/dist/e2b-cua-desktop.d.ts +3 -0
  20. package/dist/e2b-cua-desktop.js +675 -0
  21. package/dist/e2b-cua-desktop.js.map +1 -0
  22. package/dist/e2b-cua-provisioning.d.ts +311 -0
  23. package/dist/e2b-cua-provisioning.js +1213 -0
  24. package/dist/e2b-cua-provisioning.js.map +1 -0
  25. package/dist/e2b-desktop-session.d.ts +7 -0
  26. package/dist/e2b-desktop-session.js +29 -0
  27. package/dist/e2b-desktop-session.js.map +1 -0
  28. package/dist/index.d.ts +1 -1
  29. package/dist/lab-summary.d.ts +3 -1
  30. package/dist/local-agent-cli.js +1 -1
  31. package/dist/local-agent-cli.js.map +1 -1
  32. package/dist/observer-app.html +2 -2
  33. package/dist/program.js +24 -9
  34. package/dist/program.js.map +1 -1
  35. package/dist/restricted-codex-analysis.d.ts +15 -0
  36. package/dist/restricted-codex-analysis.js +13 -0
  37. package/dist/restricted-codex-analysis.js.map +1 -0
  38. package/dist/restricted-codex-policy.d.ts +56 -0
  39. package/dist/restricted-codex-policy.js +151 -0
  40. package/dist/restricted-codex-policy.js.map +1 -0
  41. package/dist/restricted-codex-session.d.ts +19 -0
  42. package/dist/restricted-codex-session.js +419 -0
  43. package/dist/restricted-codex-session.js.map +1 -0
  44. package/dist/restricted-codex-transport.d.ts +58 -0
  45. package/dist/restricted-codex-transport.js +233 -0
  46. package/dist/restricted-codex-transport.js.map +1 -0
  47. package/dist/run.d.ts +1 -1
  48. package/dist/run.js +1 -1
  49. package/dist/run.js.map +1 -1
  50. package/dist/study-analysis-codex-config.d.ts +11 -0
  51. package/dist/study-analysis-codex-config.js +34 -0
  52. package/dist/study-analysis-codex-config.js.map +1 -0
  53. package/dist/study-analysis-engine.d.ts +6 -3
  54. package/dist/study-analysis-engine.js +19 -10
  55. package/dist/study-analysis-engine.js.map +1 -1
  56. package/dist/study-analysis-job.d.ts +1 -0
  57. package/dist/study-analysis-job.js +1 -1
  58. package/dist/study-analysis-job.js.map +1 -1
  59. package/dist/study-analysis-provider.d.ts +4 -2
  60. package/dist/study-analysis-provider.js +1 -1
  61. package/dist/study-analysis-provider.js.map +1 -1
  62. package/dist/study-analysis-service.d.ts +3 -0
  63. package/dist/study-analysis-service.js +24 -6
  64. package/dist/study-analysis-service.js.map +1 -1
  65. package/dist/study-analysis-validation.d.ts +29 -5
  66. package/dist/study-analysis-validation.js +23 -10
  67. package/dist/study-analysis-validation.js.map +1 -1
  68. package/dist/study-analysis.d.ts +27 -2
  69. package/dist/tui-app.js +102 -102
  70. package/docs/architecture/desktop-sessions.md +80 -0
  71. package/docs/architecture/restricted-codex-analysis.md +89 -0
  72. package/docs/contracts/run-bundle.md +7 -4
  73. package/docs/contracts/schemas.md +1 -1
  74. package/docs/contracts/study-analysis.md +44 -2
  75. package/docs/goals/current.md +4 -4
  76. package/docs/product/automatic-analysis.md +24 -3
  77. package/docs/ramp/README.md +11 -1
  78. package/docs/release/0.96.1-browser-navigation.md +22 -0
  79. package/docs/release/0.97.0-codex-account-analysis.md +45 -0
  80. package/package.json +1 -1
  81. package/skills/humanish/SKILL.md +19 -0
@@ -0,0 +1,15 @@
1
+ import { type RestrictedCodexSessionOptions } from "./restricted-codex-session.js";
2
+ import type { RestrictedCodexAnalysisErrorCode, RestrictedCodexRequest, RestrictedCodexResult } from "./restricted-codex-policy.js";
3
+ export { RESTRICTED_CODEX_ANALYSIS_IDENTITY, RESTRICTED_CODEX_ANALYSIS_MODELS } from "./restricted-codex-policy.js";
4
+ export type { RestrictedCodexAnalysisErrorCode } from "./restricted-codex-policy.js";
5
+ /** Structurally implements StudyAnalysisProvider without importing its API transport.
6
+ * Schema/evidence validation and transient-secret scrubbing remain in the engine. */
7
+ export declare function createRestrictedCodexAnalysisProvider(options?: RestrictedCodexSessionOptions): (request: RestrictedCodexRequest) => Promise<RestrictedCodexResult>;
8
+ /** Does not submit a model turn. Readiness is not a quota/access guarantee. */
9
+ export declare function checkRestrictedCodexAnalysisReadiness(input?: {
10
+ signal?: AbortSignal;
11
+ timeoutMs?: number;
12
+ }, options?: RestrictedCodexSessionOptions): Promise<{
13
+ ready: boolean;
14
+ errorCode: RestrictedCodexAnalysisErrorCode | null;
15
+ }>;
@@ -0,0 +1,13 @@
1
+ import { checkRestrictedCodexSessionReadiness, runRestrictedCodexSession } from "./restricted-codex-session.js";
2
+ export { RESTRICTED_CODEX_ANALYSIS_IDENTITY, RESTRICTED_CODEX_ANALYSIS_MODELS } from "./restricted-codex-policy.js";
3
+ /** Structurally implements StudyAnalysisProvider without importing its API transport.
4
+ * Schema/evidence validation and transient-secret scrubbing remain in the engine. */
5
+ export function createRestrictedCodexAnalysisProvider(options = {}) {
6
+ return request => runRestrictedCodexSession(request, options);
7
+ }
8
+ /** Does not submit a model turn. Readiness is not a quota/access guarantee. */
9
+ export async function checkRestrictedCodexAnalysisReadiness(input = {}, options = {}) {
10
+ const result = await checkRestrictedCodexSessionReadiness(input, options);
11
+ return { ready: result.status === "completed", errorCode: result.errorCode };
12
+ }
13
+ //# sourceMappingURL=restricted-codex-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restricted-codex-analysis.js","sourceRoot":"","sources":["../src/restricted-codex-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,yBAAyB,EAAsC,MAAM,+BAA+B,CAAC;AAEpJ,OAAO,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAGpH;qFACqF;AACrF,MAAM,UAAU,qCAAqC,CAAC,UAAyC,EAAE;IAE/F,OAAO,OAAO,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,QAAsD,EAAE,EAClH,UAAyC,EAAE;IAC3C,MAAM,MAAM,GAAG,MAAM,oCAAoC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,56 @@
1
+ /** Versioned, deliberately narrow profile qualified with an account-backed vision turn.
2
+ * The CLI still advertises code-mode tools: disabling their host is the enforcement
3
+ * boundary. Feature names alone are not proof that a tool has been removed. */
4
+ export declare const RESTRICTED_CODEX_ANALYSIS_IDENTITY: {
5
+ readonly provider: "codex";
6
+ readonly authMode: "chatgpt";
7
+ readonly modelProvider: "openai";
8
+ readonly cliVersion: "0.154.0";
9
+ readonly toolPolicy: "restricted-codex-v1";
10
+ readonly reasoningEffort: "low";
11
+ };
12
+ export declare const RESTRICTED_CODEX_ANALYSIS_MODELS: readonly ["gpt-6-astra"];
13
+ export type RestrictedCodexAnalysisErrorCode = "invalid_request" | "cancelled" | "timeout" | "response_too_large" | "invalid_response" | "refusal" | "output_incomplete" | "codex_unavailable" | "codex_unsupported_version" | "codex_unsupported_platform" | "codex_login_required" | "codex_unsupported_auth" | "codex_unsafe_configuration" | "codex_model_unavailable" | "codex_protocol_error" | "codex_tool_call" | "codex_process_failed" | "codex_cleanup_failed" | "codex_busy";
14
+ export interface RestrictedCodexRequest {
15
+ model: string;
16
+ instructions: string;
17
+ evidence: string;
18
+ images: {
19
+ evidenceId: string;
20
+ dataUrl: string;
21
+ }[];
22
+ schema: Record<string, unknown>;
23
+ maxOutputTokens: number | null;
24
+ timeoutMs: number;
25
+ signal?: AbortSignal;
26
+ }
27
+ export interface RestrictedCodexUsage {
28
+ input: number;
29
+ output: number;
30
+ cachedInput?: number;
31
+ cacheWriteInput?: number;
32
+ }
33
+ export interface RestrictedCodexResult {
34
+ status: "completed" | "incomplete" | "refused" | "failed" | "cancelled" | "timed_out";
35
+ output: unknown;
36
+ usage: RestrictedCodexUsage | null;
37
+ usageComplete: boolean;
38
+ dispatched: boolean;
39
+ errorCode: RestrictedCodexAnalysisErrorCode | null;
40
+ }
41
+ export declare const CODEX_MAX_REQUEST_BYTES: number;
42
+ export declare const CODEX_MAX_OUTPUT_BYTES: number;
43
+ export declare const CODEX_MAX_STDOUT_BYTES: number;
44
+ export declare const CODEX_MAX_EVENTS = 65536;
45
+ export declare const CODEX_IMAGE: RegExp;
46
+ export declare const codexRecord: (value: unknown) => Record<string, unknown>;
47
+ export declare function restrictedCodexConfig(model: string): {
48
+ toml: string;
49
+ overrides: Record<string, unknown>;
50
+ };
51
+ /** Inspect before thread/start, which could otherwise start inherited integrations. */
52
+ export declare function admitsRestrictedCodexConfig(raw: unknown, configPath: string, model: string): boolean;
53
+ export declare function admitsRestrictedCodexThread(raw: unknown, model: string, cwd: string): boolean;
54
+ export declare function restrictedCodexRequestError(request: RestrictedCodexRequest): RestrictedCodexAnalysisErrorCode | null;
55
+ export declare function restrictedCodexUsage(raw: unknown): RestrictedCodexUsage | null;
56
+ export declare function restrictedCodexFailure(errorCode: RestrictedCodexAnalysisErrorCode, dispatched?: boolean, usage?: RestrictedCodexUsage | null): RestrictedCodexResult;
@@ -0,0 +1,151 @@
1
+ /** Versioned, deliberately narrow profile qualified with an account-backed vision turn.
2
+ * The CLI still advertises code-mode tools: disabling their host is the enforcement
3
+ * boundary. Feature names alone are not proof that a tool has been removed. */
4
+ export const RESTRICTED_CODEX_ANALYSIS_IDENTITY = {
5
+ provider: "codex", authMode: "chatgpt", modelProvider: "openai", cliVersion: "0.154.0",
6
+ toolPolicy: "restricted-codex-v1", reasoningEffort: "low"
7
+ };
8
+ export const RESTRICTED_CODEX_ANALYSIS_MODELS = ["gpt-6-astra"];
9
+ export const CODEX_MAX_REQUEST_BYTES = 32 * 1024 * 1024;
10
+ export const CODEX_MAX_OUTPUT_BYTES = 2 * 1024 * 1024;
11
+ export const CODEX_MAX_STDOUT_BYTES = 8 * 1024 * 1024;
12
+ export const CODEX_MAX_EVENTS = 65_536;
13
+ export const CODEX_IMAGE = /^data:image\/(png|jpeg|webp);base64,([A-Za-z0-9+/]+={0,2})$/;
14
+ export const codexRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
15
+ const empty = (value) => value === null || value === undefined
16
+ || (typeof value === "object" && Object.keys(value).length === 0);
17
+ const count = (value) => Number.isSafeInteger(value) && value >= 0 && value <= 1e12;
18
+ const disabledFeatures = ["apps", "plugins", "hooks", "shell_tool", "shell_snapshot", "view_image", "image_generation",
19
+ "skill_search", "skill_mcp_dependency_install", "multi_agent", "multi_agent_v2", "browser_use", "browser_use_external",
20
+ "computer_use", "memories", "external_agent_memory_import", "goals", "sleep_tool", "tool_suggest", "code_mode",
21
+ "code_mode_host", "code_mode_only", "default_mode_request_user_input", "unbounded_connection_retries",
22
+ "workspace_dependencies", "remote_plugin", "recommended_plugins", "in_app_local_automation"];
23
+ export function restrictedCodexConfig(model) {
24
+ const overrides = {
25
+ model, model_provider: "openai", model_reasoning_effort: "low", approval_policy: "never", sandbox_mode: "read-only",
26
+ forced_login_method: "chatgpt", project_doc_max_bytes: 0, web_search: "disabled", "history.persistence": "none",
27
+ "analytics.enabled": false, "features.skip_host_skill_discovery": true, "skills.bundled.enabled": false,
28
+ "agents.enabled": false, "agents.max_threads": 1, "agents.max_depth": 1
29
+ };
30
+ for (const name of disabledFeatures)
31
+ overrides[`features.${name}`] = false;
32
+ const toml = `model = ${JSON.stringify(model)}
33
+ model_provider = "openai"
34
+ model_reasoning_effort = "low"
35
+ approval_policy = "never"
36
+ sandbox_mode = "read-only"
37
+ forced_login_method = "chatgpt"
38
+ project_doc_max_bytes = 0
39
+ web_search = "disabled"
40
+ [history]
41
+ persistence = "none"
42
+ [analytics]
43
+ enabled = false
44
+ [features]
45
+ skip_host_skill_discovery = true
46
+ ${disabledFeatures.map(name => `${name} = false`).join("\n")}
47
+ [skills.bundled]
48
+ enabled = false
49
+ [agents]
50
+ enabled = false
51
+ max_threads = 1
52
+ max_depth = 1
53
+ `;
54
+ return { toml, overrides };
55
+ }
56
+ /** Inspect before thread/start, which could otherwise start inherited integrations. */
57
+ export function admitsRestrictedCodexConfig(raw, configPath, model) {
58
+ const root = codexRecord(raw), config = codexRecord(root.config), features = codexRecord(config.features);
59
+ if (!Array.isArray(root.layers) || root.layers.length === 0)
60
+ return false;
61
+ let ownLayer = false;
62
+ for (const rawLayer of root.layers) {
63
+ const layer = codexRecord(rawLayer), name = codexRecord(layer.name);
64
+ if (name.type === "user" && name.file === configPath && name.profile === null
65
+ && (layer.disabledReason === null || layer.disabledReason === undefined)) {
66
+ if (ownLayer)
67
+ return false;
68
+ ownLayer = true;
69
+ }
70
+ else if (name.type !== "system" || !empty(layer.config))
71
+ return false;
72
+ }
73
+ if (!ownLayer || config.model !== model || config.model_provider !== "openai" || config.model_reasoning_effort !== "low"
74
+ || config.forced_login_method !== "chatgpt" || config.sandbox_mode !== "read-only" || config.approval_policy !== "never"
75
+ || config.project_doc_max_bytes !== 0 || config.web_search !== "disabled" || features.skip_host_skill_discovery !== true
76
+ || codexRecord(config.history).persistence !== "none" || codexRecord(config.analytics).enabled !== false
77
+ || disabledFeatures.some(name => features[name] !== false))
78
+ return false;
79
+ const agents = codexRecord(config.agents), skills = codexRecord(config.skills);
80
+ if (agents.enabled !== false || agents.max_concurrent_threads_per_session !== 1 || agents.max_depth !== 1
81
+ || codexRecord(skills.bundled).enabled !== false || Object.keys(skills).some(key => key !== "bundled"))
82
+ return false;
83
+ for (const key of ["mcp_servers", "plugins", "hooks", "notify", "instructions", "developer_instructions", "permissions",
84
+ "profiles", "projects", "model_providers", "experimental_compact_prompt_file", "experimental_model_instructions_file", "model_instructions_file",
85
+ "model_catalog_json", "openai_base_url", "orchestrator", "experimental_thread_store", "experimental_thread_store_endpoint",
86
+ "experimental_realtime_ws_base_url", "experimental_realtime_webrtc_call_base_url", "forced_chatgpt_workspace_id",
87
+ "log_dir", "sqlite_home", "otel", "marketplaces", "js_repl_node_path", "js_repl_node_module_dirs", "responses_api_metadata",
88
+ "compact_prompt", "profile", "default_permissions", "auto_review", "apps", "browser_use", "computer_use", "desktop", "memories", "realtime"])
89
+ if (!empty(config[key]))
90
+ return false;
91
+ if (Object.values(codexRecord(config.shell_environment_policy)).some(value => !empty(value)))
92
+ return false;
93
+ return config.cli_auth_credentials_store === "file" && config.chatgpt_base_url === "https://chatgpt.com/backend-api/";
94
+ }
95
+ export function admitsRestrictedCodexThread(raw, model, cwd) {
96
+ const value = codexRecord(raw), thread = codexRecord(value.thread), sandbox = codexRecord(value.sandbox);
97
+ return typeof thread.id === "string" && thread.id.length > 0 && thread.id.length <= 200
98
+ && thread.ephemeral === true && thread.model === model && thread.modelProvider === "openai"
99
+ && thread.reasoningEffort === "low" && thread.cliVersion === RESTRICTED_CODEX_ANALYSIS_IDENTITY.cliVersion
100
+ && Array.isArray(thread.environments) && thread.environments.length === 0 && thread.path === null
101
+ && value.model === model && value.modelProvider === "openai" && value.reasoningEffort === "low"
102
+ && value.cwd === cwd && thread.cwd === cwd && value.approvalPolicy === "never"
103
+ && sandbox.type === "readOnly" && sandbox.networkAccess === false
104
+ && Array.isArray(value.instructionSources) && value.instructionSources.length === 0
105
+ && Array.isArray(value.runtimeWorkspaceRoots) && value.runtimeWorkspaceRoots.length === 0;
106
+ }
107
+ export function restrictedCodexRequestError(request) {
108
+ if (request.signal?.aborted)
109
+ return "cancelled";
110
+ if (!RESTRICTED_CODEX_ANALYSIS_MODELS.some(model => model === request.model))
111
+ return "codex_model_unavailable";
112
+ if (request.maxOutputTokens !== null || !Number.isSafeInteger(request.timeoutMs) || request.timeoutMs < 1 || request.timeoutMs > 600_000
113
+ || typeof request.instructions !== "string" || typeof request.evidence !== "string" || !Array.isArray(request.images)
114
+ || request.images.length > 128 || !request.schema || typeof request.schema !== "object" || Array.isArray(request.schema))
115
+ return "invalid_request";
116
+ try {
117
+ if (new TextEncoder().encode(JSON.stringify({ instructions: request.instructions, evidence: request.evidence,
118
+ images: request.images, schema: request.schema })).byteLength > CODEX_MAX_REQUEST_BYTES)
119
+ return "invalid_request";
120
+ let imageBytes = 0;
121
+ for (const image of request.images) {
122
+ if (typeof image.evidenceId !== "string" || image.evidenceId.length === 0 || image.evidenceId.length > 300
123
+ || typeof image.dataUrl !== "string")
124
+ return "invalid_request";
125
+ const match = CODEX_IMAGE.exec(image.dataUrl);
126
+ if (!match)
127
+ return "invalid_request";
128
+ const decoded = atob(match[2]);
129
+ imageBytes += decoded.length;
130
+ if (btoa(decoded) !== match[2] || imageBytes > 20 * 1024 * 1024)
131
+ return "invalid_request";
132
+ }
133
+ return null;
134
+ }
135
+ catch {
136
+ return "invalid_request";
137
+ }
138
+ }
139
+ export function restrictedCodexUsage(raw) {
140
+ const total = codexRecord(codexRecord(raw).total);
141
+ const input = total.inputTokens, output = total.outputTokens, cachedInput = total.cachedInputTokens, cacheWriteInput = total.cacheWriteInputTokens;
142
+ if (!count(input) || !count(output) || !count(cachedInput) || !count(cacheWriteInput) || cachedInput + cacheWriteInput > input)
143
+ return null;
144
+ return { input, output, cachedInput, cacheWriteInput };
145
+ }
146
+ export function restrictedCodexFailure(errorCode, dispatched = false, usage = null) {
147
+ return { status: errorCode === "cancelled" ? "cancelled" : errorCode === "timeout" ? "timed_out"
148
+ : errorCode === "refusal" ? "refused" : errorCode === "output_incomplete" ? "incomplete" : "failed",
149
+ output: null, usage, usageComplete: false, dispatched, errorCode };
150
+ }
151
+ //# sourceMappingURL=restricted-codex-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restricted-codex-policy.js","sourceRoot":"","sources":["../src/restricted-codex-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type RestrictedCodexRequest, type RestrictedCodexResult } from "./restricted-codex-policy.js";
2
+ import { type RestrictedCodexSpawn } from "./restricted-codex-transport.js";
3
+ /** Internal host dependencies. None of these options is accepted from a study artifact. */
4
+ export interface RestrictedCodexSessionOptions {
5
+ executable?: string;
6
+ authHome?: string;
7
+ env?: NodeJS.ProcessEnv;
8
+ tempRoot?: string;
9
+ platform?: NodeJS.Platform;
10
+ arch?: string;
11
+ spawnFn?: RestrictedCodexSpawn;
12
+ }
13
+ /** The gate covers all factories and readiness checks in this process. It does not
14
+ * promise to serialize unrelated Codex applications using the same host login. */
15
+ export declare function runRestrictedCodexSession(request: RestrictedCodexRequest, options?: RestrictedCodexSessionOptions, readinessOnly?: boolean): Promise<RestrictedCodexResult>;
16
+ export declare function checkRestrictedCodexSessionReadiness(input?: {
17
+ signal?: AbortSignal;
18
+ timeoutMs?: number;
19
+ }, options?: RestrictedCodexSessionOptions): Promise<RestrictedCodexResult>;