takomi 2.1.38 → 2.1.40

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 (90) hide show
  1. package/.agents/plugins/marketplace.json +32 -0
  2. package/.pi/agents/architect.md +4 -2
  3. package/.pi/agents/designer.md +2 -0
  4. package/.pi/agents/orchestrator.md +9 -9
  5. package/.pi/prompts/design-prompt.md +3 -1
  6. package/.pi/prompts/genesis-prompt.md +2 -0
  7. package/.pi/prompts/takomi-prompt.md +10 -9
  8. package/README.md +218 -409
  9. package/assets/.agent/skills/takomi-flow/SKILL.md +244 -0
  10. package/assets/.agent/workflows/README.md +3 -3
  11. package/assets/.agent/workflows/mode-architect.md +7 -5
  12. package/assets/.agent/workflows/vibe-design.md +3 -1
  13. package/assets/.agent/workflows/vibe-genesis.md +2 -0
  14. package/assets/Takomi-Agents/custom_modes.yaml +1253 -1252
  15. package/assets/Takomi-Agents/vibe-architect.yaml +11 -6
  16. package/assets/Takomi-Agents/vibe-orchestrator.yaml +2 -2
  17. package/docs/features/TakomiFlow_Portable_Plugin.md +82 -0
  18. package/docs/takomi-flow-onboarding.md +86 -0
  19. package/docs/takomi-flow-public-distribution.md +94 -0
  20. package/package.json +19 -2
  21. package/plugins/takomi-codex/.codex-plugin/plugin.json +37 -0
  22. package/plugins/takomi-codex/assets/composer-icon.png +0 -0
  23. package/plugins/takomi-codex/assets/logo-dark.png +0 -0
  24. package/plugins/takomi-codex/assets/logo.png +0 -0
  25. package/plugins/takomi-codex/scripts/takomi-board.ps1 +197 -0
  26. package/plugins/takomi-codex/scripts/takomi-detect.ps1 +125 -0
  27. package/plugins/takomi-codex/scripts/takomi-doctor.ps1 +88 -0
  28. package/plugins/takomi-codex/scripts/takomi-harness.ps1 +52 -0
  29. package/plugins/takomi-codex/scripts/takomi-pi-dispatch.ps1 +93 -0
  30. package/plugins/takomi-codex/scripts/takomi-policy.ps1 +108 -0
  31. package/plugins/takomi-codex/skills/takomi-codex/SKILL.md +194 -0
  32. package/plugins/takomi-flow/.codex-plugin/plugin.json +36 -0
  33. package/plugins/takomi-flow/.mcp.json +11 -0
  34. package/plugins/takomi-flow/assets/capabilities.json +203 -0
  35. package/plugins/takomi-flow/assets/collection.schema.json +29 -0
  36. package/plugins/takomi-flow/assets/composer-icon.png +0 -0
  37. package/plugins/takomi-flow/assets/examples.json +94 -0
  38. package/plugins/takomi-flow/assets/logo-dark.png +0 -0
  39. package/plugins/takomi-flow/assets/logo.png +0 -0
  40. package/plugins/takomi-flow/assets/request.schema.json +91 -0
  41. package/plugins/takomi-flow/assets/result.schema.json +46 -0
  42. package/plugins/takomi-flow/assets/templates/image-request.json +17 -0
  43. package/plugins/takomi-flow/assets/templates/video-request.json +19 -0
  44. package/plugins/takomi-flow/package.json +38 -0
  45. package/plugins/takomi-flow/pnpm-lock.yaml +813 -0
  46. package/plugins/takomi-flow/references/flow-provider-contract.md +349 -0
  47. package/plugins/takomi-flow/scripts/lib/agent-plan.mjs +140 -0
  48. package/plugins/takomi-flow/scripts/lib/api.mjs +113 -0
  49. package/plugins/takomi-flow/scripts/lib/args.mjs +66 -0
  50. package/plugins/takomi-flow/scripts/lib/audit.mjs +65 -0
  51. package/plugins/takomi-flow/scripts/lib/browser.mjs +78 -0
  52. package/plugins/takomi-flow/scripts/lib/capabilities.mjs +11 -0
  53. package/plugins/takomi-flow/scripts/lib/collect.mjs +53 -0
  54. package/plugins/takomi-flow/scripts/lib/commands.mjs +192 -0
  55. package/plugins/takomi-flow/scripts/lib/doctor.mjs +77 -0
  56. package/plugins/takomi-flow/scripts/lib/examples.mjs +17 -0
  57. package/plugins/takomi-flow/scripts/lib/flow-media.mjs +39 -0
  58. package/plugins/takomi-flow/scripts/lib/flow-outcome.mjs +115 -0
  59. package/plugins/takomi-flow/scripts/lib/flow-project-session.mjs +153 -0
  60. package/plugins/takomi-flow/scripts/lib/flow-ui.mjs +204 -0
  61. package/plugins/takomi-flow/scripts/lib/generation.mjs +190 -0
  62. package/plugins/takomi-flow/scripts/lib/inspect.mjs +81 -0
  63. package/plugins/takomi-flow/scripts/lib/mcp-prompts.mjs +39 -0
  64. package/plugins/takomi-flow/scripts/lib/mcp-resources.mjs +16 -0
  65. package/plugins/takomi-flow/scripts/lib/mcp-tools.mjs +165 -0
  66. package/plugins/takomi-flow/scripts/lib/media.mjs +78 -0
  67. package/plugins/takomi-flow/scripts/lib/observe.mjs +54 -0
  68. package/plugins/takomi-flow/scripts/lib/paths.mjs +37 -0
  69. package/plugins/takomi-flow/scripts/lib/playwright-loader.mjs +23 -0
  70. package/plugins/takomi-flow/scripts/lib/prompts.mjs +72 -0
  71. package/plugins/takomi-flow/scripts/lib/report.mjs +141 -0
  72. package/plugins/takomi-flow/scripts/lib/request-validator.mjs +73 -0
  73. package/plugins/takomi-flow/scripts/lib/request.mjs +66 -0
  74. package/plugins/takomi-flow/scripts/lib/resource-files.mjs +69 -0
  75. package/plugins/takomi-flow/scripts/lib/result.mjs +31 -0
  76. package/plugins/takomi-flow/scripts/lib/review.mjs +44 -0
  77. package/plugins/takomi-flow/scripts/lib/selftest.mjs +153 -0
  78. package/plugins/takomi-flow/scripts/lib/settings-plan.mjs +44 -0
  79. package/plugins/takomi-flow/scripts/lib/templates.mjs +37 -0
  80. package/plugins/takomi-flow/scripts/lib/trusted-chrome.mjs +67 -0
  81. package/plugins/takomi-flow/scripts/lib/workflow.mjs +56 -0
  82. package/plugins/takomi-flow/scripts/mcp-server.mjs +18 -0
  83. package/plugins/takomi-flow/scripts/mcp-smoke.mjs +144 -0
  84. package/plugins/takomi-flow/scripts/takomi-flow.mjs +17 -0
  85. package/plugins/takomi-flow/skills/takomi-flow/SKILL.md +244 -0
  86. package/plugins/takomi-flow/skills/takomi-flow/agents/openai.yaml +7 -0
  87. package/scripts/install-takomi-flow.ps1 +85 -0
  88. package/src/pi-takomi-core/orchestration.ts +1 -1
  89. package/src/pi-takomi-core/workflows.ts +4 -4
  90. package/src/skills-catalog.js +11 -7
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "takomi-flow",
3
+ "version": "0.1.0+codex.20260701110901",
4
+ "description": "Agent-first Google Flow browser automation for Codex and Takomi workflows.",
5
+ "author": {
6
+ "name": "JStaR Films Studios"
7
+ },
8
+ "skills": "./skills/",
9
+ "mcpServers": "./.mcp.json",
10
+ "interface": {
11
+ "displayName": "TakomiFlow",
12
+ "shortDescription": "Generate Flow images, videos, moodboards, and scene assets from Codex.",
13
+ "longDescription": "TakomiFlow turns Google Flow into a reusable creative asset lane for Codex and Takomi: bootstrap a trusted Chrome session, reuse an existing Flow browser, generate image keyframes or video shots with explicit spend guards, download assets, extract review frames, record project URLs, and hand off clean reports to the next agent.",
14
+ "developerName": "JStaR Films Studios",
15
+ "category": "Productivity",
16
+ "capabilities": [
17
+ "browser-automation",
18
+ "mcp-tools",
19
+ "video-generation",
20
+ "image-generation",
21
+ "asset-pipeline"
22
+ ],
23
+ "defaultPrompt": [
24
+ "Create a 4-second cinematic Google Flow shot for this scene and return the MP4, project URL, frames, and report.",
25
+ "Generate a 1:1 Flow keyframe image for this concept, then download and catalog it for my asset pipeline.",
26
+ "Turn this reference image into a short Flow video with a slow camera move and package the result for review.",
27
+ "Make a moodboard-style image set in Flow for this brand direction: premium, cinematic, practical lighting.",
28
+ "Check whether my trusted Flow browser is already running, reuse it if possible, then run a no-spend observe.",
29
+ "Review the latest TakomiFlow run, extract video frames, and collect the assets into my project folder."
30
+ ],
31
+ "brandColor": "#36DCFF",
32
+ "composerIcon": "./assets/composer-icon.png",
33
+ "logo": "./assets/logo.png",
34
+ "logoDark": "./assets/logo-dark.png"
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "takomi-flow": {
4
+ "type": "stdio",
5
+ "command": "node",
6
+ "args": [
7
+ "scripts/mcp-server.mjs"
8
+ ]
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,203 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "provider": "takomi-flow",
4
+ "description": "Safe browser-driven Google Flow asset generation for Codex agents.",
5
+ "kinds": ["video", "image"],
6
+ "modes": {
7
+ "video": ["text-to-video", "image-to-video"],
8
+ "image": ["text-to-image"]
9
+ },
10
+ "variations": {
11
+ "min": 1,
12
+ "max": 4,
13
+ "default": 1
14
+ },
15
+ "aspectRatios": ["16:9", "9:16", "1:1"],
16
+ "durationSeconds": {
17
+ "suggested": [4, 6, 8, 10],
18
+ "default": 4
19
+ },
20
+ "requestFields": [
21
+ {
22
+ "name": "kind",
23
+ "type": "enum",
24
+ "required": true,
25
+ "values": ["video", "image"],
26
+ "description": "The asset type to ask Flow for."
27
+ },
28
+ {
29
+ "name": "prompt",
30
+ "type": "string",
31
+ "required": true,
32
+ "description": "The natural-language generation prompt."
33
+ },
34
+ {
35
+ "name": "mode",
36
+ "type": "enum",
37
+ "required": false,
38
+ "values": ["text-to-video", "image-to-video", "text-to-image"],
39
+ "description": "The basic Flow generation mode hint."
40
+ },
41
+ {
42
+ "name": "variations",
43
+ "type": "integer",
44
+ "required": false,
45
+ "min": 1,
46
+ "max": 4,
47
+ "description": "How many variations to request or look for."
48
+ },
49
+ {
50
+ "name": "aspectRatio",
51
+ "type": "enum",
52
+ "required": false,
53
+ "values": ["16:9", "9:16", "1:1"],
54
+ "description": "Preferred image/video frame shape."
55
+ },
56
+ {
57
+ "name": "durationSeconds",
58
+ "type": "number",
59
+ "required": false,
60
+ "values": [4, 6, 8, 10],
61
+ "description": "Preferred video duration hint."
62
+ },
63
+ {
64
+ "name": "sourceAssets",
65
+ "type": "string[]",
66
+ "required": false,
67
+ "description": "Local images/videos to use as references when the Flow UI supports the selected mode."
68
+ },
69
+ {
70
+ "name": "extractFrames",
71
+ "type": "integer",
72
+ "required": false,
73
+ "description": "Number of review frames to extract from downloaded videos."
74
+ },
75
+ {
76
+ "name": "allowSpend",
77
+ "type": "boolean",
78
+ "required": false,
79
+ "description": "Explicit user approval to submit a generation that may spend Flow credits."
80
+ },
81
+ {
82
+ "name": "projectUrl",
83
+ "type": "string",
84
+ "required": false,
85
+ "description": "Existing Flow project URL to reuse instead of creating a new project."
86
+ },
87
+ {
88
+ "name": "reuseCurrentProject",
89
+ "type": "boolean",
90
+ "required": false,
91
+ "description": "Prefer the already open Flow project tab when attached to trusted Chrome."
92
+ },
93
+ {
94
+ "name": "allowNewProject",
95
+ "type": "boolean",
96
+ "required": false,
97
+ "description": "Permit clicking New project when no reusable project is available."
98
+ },
99
+ {
100
+ "name": "freshChatOnFailure",
101
+ "type": "boolean",
102
+ "required": false,
103
+ "description": "Recover stale or broken chat state by starting a fresh chat inside the same project."
104
+ },
105
+ {
106
+ "name": "editorWaitMs",
107
+ "type": "integer",
108
+ "required": false,
109
+ "description": "Override the Flow project editor readiness wait budget in milliseconds."
110
+ }
111
+ ],
112
+ "sourceAssets": {
113
+ "supported": true,
114
+ "note": "Source assets are part of the request contract; live UI attachment selectors still need tuning after observation."
115
+ },
116
+ "outputs": {
117
+ "runMetadata": "run.json",
118
+ "assetCatalog": "assets.json",
119
+ "downloadsFolder": "downloads/",
120
+ "screenshotsFolder": "screenshots/",
121
+ "framesFolder": "frames/"
122
+ },
123
+ "schemas": {
124
+ "request": "takomi-flow://schemas/request",
125
+ "result": "takomi-flow://schemas/result",
126
+ "collection": "takomi-flow://schemas/collection"
127
+ },
128
+ "settingsCoverage": {
129
+ "automatic": ["prompt", "project reuse", "same-project chat recovery", "download folder", "metadata", "asset catalog", "video review frame extraction"],
130
+ "selectorDependent": ["mode", "aspectRatio", "durationSeconds", "modelHint", "sourceAssets", "variations"],
131
+ "note": "Selector-dependent settings are preserved in settingsPlan metadata until live Flow controls are observed and tuned."
132
+ },
133
+ "safety": {
134
+ "spendGuardDefault": false,
135
+ "requiresAllowSpend": true,
136
+ "newProjectDefault": false,
137
+ "sameProjectChatRecovery": true,
138
+ "bypassCaptcha": false,
139
+ "bypassQuota": false,
140
+ "automateCredentials": false
141
+ },
142
+ "commands": [
143
+ "doctor",
144
+ "audit",
145
+ "examples",
146
+ "trusted-chrome",
147
+ "plan",
148
+ "bootstrap",
149
+ "observe",
150
+ "smoke",
151
+ "template",
152
+ "prepare",
153
+ "workflow",
154
+ "validate",
155
+ "generate",
156
+ "selftest",
157
+ "inspect",
158
+ "latest",
159
+ "runs",
160
+ "assets",
161
+ "review",
162
+ "collect",
163
+ "report",
164
+ "capabilities"
165
+ ],
166
+ "mcpTools": [
167
+ "takomi_flow_capabilities",
168
+ "takomi_flow_doctor",
169
+ "takomi_flow_audit",
170
+ "takomi_flow_examples",
171
+ "takomi_flow_plan",
172
+ "takomi_flow_template",
173
+ "takomi_flow_prepare",
174
+ "takomi_flow_workflow",
175
+ "takomi_flow_validate",
176
+ "takomi_flow_observe",
177
+ "takomi_flow_generate",
178
+ "takomi_flow_selftest",
179
+ "takomi_flow_inspect",
180
+ "takomi_flow_latest",
181
+ "takomi_flow_runs",
182
+ "takomi_flow_assets",
183
+ "takomi_flow_review",
184
+ "takomi_flow_collect",
185
+ "takomi_flow_report"
186
+ ],
187
+ "mcpResources": [
188
+ "takomi-flow://contract",
189
+ "takomi-flow://capabilities",
190
+ "takomi-flow://examples",
191
+ "takomi-flow://schemas/request",
192
+ "takomi-flow://schemas/result",
193
+ "takomi-flow://schemas/collection",
194
+ "takomi-flow://templates/video",
195
+ "takomi-flow://templates/image"
196
+ ],
197
+ "mcpPrompts": [
198
+ "takomi_flow_video_workflow",
199
+ "takomi_flow_image_workflow",
200
+ "takomi_flow_review_workflow",
201
+ "takomi_flow_collect_workflow"
202
+ ]
203
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "takomi-flow://schemas/collection",
4
+ "title": "TakomiFlow Collection Manifest",
5
+ "description": "Manifest written by the collect command when packaging run outputs for downstream projects.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": ["schemaVersion", "status", "runId", "targetDir", "copied"],
9
+ "properties": {
10
+ "schemaVersion": { "type": "integer", "const": 1 },
11
+ "status": { "type": "string", "enum": ["collected", "empty"] },
12
+ "runId": { "type": "string" },
13
+ "sourceRunDir": { "type": "string" },
14
+ "targetDir": { "type": "string" },
15
+ "manifestPath": { "type": "string" },
16
+ "copied": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "object",
20
+ "required": ["source", "target"],
21
+ "properties": {
22
+ "source": { "type": "string" },
23
+ "target": { "type": "string" }
24
+ }
25
+ }
26
+ },
27
+ "review": { "type": "object" }
28
+ }
29
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "examples": [
4
+ {
5
+ "name": "cinematic-video",
6
+ "description": "A polished text-to-video shot with review frames and a clean handoff.",
7
+ "request": {
8
+ "schemaVersion": 1,
9
+ "kind": "video",
10
+ "prompt": "A 4 second cinematic hero shot of a creator's production desk at night: printed storyboards, reference photos, camera lens, warm desk lamp, slow push-in, premium film look, no readable text",
11
+ "variations": 1,
12
+ "aspectRatio": "16:9",
13
+ "durationSeconds": 4,
14
+ "mode": "text-to-video",
15
+ "modelHint": "best-available",
16
+ "allowSpend": false,
17
+ "extractFrames": 4,
18
+ "sourceAssets": []
19
+ }
20
+ },
21
+ {
22
+ "name": "moodboard-keyframe",
23
+ "description": "A square image/keyframe request for brand, pitch, or scene development.",
24
+ "request": {
25
+ "schemaVersion": 1,
26
+ "kind": "image",
27
+ "prompt": "Generate 1 1:1 image of a premium creative studio moodboard on a clean table: printed reference photos, storyboard cards, color swatches, a camera lens, warm desk lamp lighting, realistic paper texture, editorial composition, no readable text",
28
+ "variations": 1,
29
+ "aspectRatio": "1:1",
30
+ "mode": "text-to-image",
31
+ "modelHint": "best-available",
32
+ "allowSpend": false,
33
+ "sourceAssets": []
34
+ }
35
+ },
36
+ {
37
+ "name": "reference-image-to-video",
38
+ "description": "Animate a local reference image into a short cinematic motion asset.",
39
+ "request": {
40
+ "schemaVersion": 1,
41
+ "kind": "video",
42
+ "prompt": "Animate the source image into a slow cinematic push-in with soft parallax, practical light flicker, subtle dust in the air, and no readable text",
43
+ "variations": 1,
44
+ "aspectRatio": "16:9",
45
+ "durationSeconds": 4,
46
+ "mode": "image-to-video",
47
+ "modelHint": "best-available",
48
+ "allowSpend": false,
49
+ "extractFrames": 4,
50
+ "sourceAssets": ["C:/path/to/source-image.png"]
51
+ }
52
+ },
53
+ {
54
+ "name": "product-reveal-video",
55
+ "description": "A quick product-style B-roll prompt for social, landing pages, or pitch decks.",
56
+ "request": {
57
+ "schemaVersion": 1,
58
+ "kind": "video",
59
+ "prompt": "A 4 second premium product reveal shot of a matte black creative workstation on a clean table, soft cyan rim light, camera gliding past glass reflections, practical studio lighting, no readable text",
60
+ "variations": 1,
61
+ "aspectRatio": "16:9",
62
+ "durationSeconds": 4,
63
+ "mode": "text-to-video",
64
+ "modelHint": "best-available",
65
+ "allowSpend": false,
66
+ "extractFrames": 4,
67
+ "sourceAssets": []
68
+ }
69
+ },
70
+ {
71
+ "name": "character-portrait-image",
72
+ "description": "A visual-development portrait that can become a Flow video source later.",
73
+ "request": {
74
+ "schemaVersion": 1,
75
+ "kind": "image",
76
+ "prompt": "Generate 1 cinematic character portrait image of a young film director in a neon-lit editing suite, thoughtful expression, shallow depth of field, editorial realism, no readable text",
77
+ "variations": 1,
78
+ "aspectRatio": "1:1",
79
+ "mode": "text-to-image",
80
+ "modelHint": "best-available",
81
+ "allowSpend": false,
82
+ "sourceAssets": []
83
+ }
84
+ },
85
+ {
86
+ "name": "collect-after-review",
87
+ "description": "Downstream packaging pattern after a run has downloaded assets.",
88
+ "commands": [
89
+ "node scripts/takomi-flow.mjs review --run <run.json|run-dir> --frames 4",
90
+ "node scripts/takomi-flow.mjs collect --run <run.json|run-dir> --target-dir <project-output-folder> --frames 4 --include-frames"
91
+ ]
92
+ }
93
+ ]
94
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "takomi-flow://schemas/request",
4
+ "title": "TakomiFlow Request",
5
+ "description": "Request file for preparing or running a safe Google Flow image/video generation.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": ["kind", "prompt"],
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "type": "integer",
12
+ "const": 1
13
+ },
14
+ "kind": {
15
+ "type": "string",
16
+ "enum": ["video", "image"]
17
+ },
18
+ "prompt": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "variations": {
23
+ "type": "integer",
24
+ "minimum": 1,
25
+ "maximum": 4,
26
+ "default": 1
27
+ },
28
+ "aspectRatio": {
29
+ "type": "string",
30
+ "enum": ["16:9", "9:16", "1:1"]
31
+ },
32
+ "durationSeconds": {
33
+ "type": "number",
34
+ "enum": [4, 6, 8, 10]
35
+ },
36
+ "mode": {
37
+ "type": "string",
38
+ "enum": ["text-to-video", "image-to-video", "text-to-image"]
39
+ },
40
+ "modelHint": {
41
+ "type": "string",
42
+ "default": "best-available"
43
+ },
44
+ "outputDir": {
45
+ "type": "string",
46
+ "description": "Base directory where requests, run metadata, downloads, screenshots, frames, and reports are written."
47
+ },
48
+ "allowSpend": {
49
+ "type": "boolean",
50
+ "default": false,
51
+ "description": "Must be true, or TAKOMI_FLOW_ALLOW_SPEND=true must be set, before TakomiFlow submits a generation."
52
+ },
53
+ "extractFrames": {
54
+ "type": "integer",
55
+ "minimum": 0,
56
+ "default": 0
57
+ },
58
+ "sourceAssets": {
59
+ "type": "array",
60
+ "items": { "type": "string" },
61
+ "default": []
62
+ },
63
+ "projectUrl": {
64
+ "type": "string",
65
+ "description": "Existing Google Flow project/editor URL to reuse for this generation."
66
+ },
67
+ "reuseCurrentProject": {
68
+ "type": "boolean",
69
+ "default": true,
70
+ "description": "When attached to Chrome, prefer an already open Flow project tab."
71
+ },
72
+ "allowNewProject": {
73
+ "type": "boolean",
74
+ "default": false,
75
+ "description": "Permit TakomiFlow to click New project when no reusable project/editor is available."
76
+ },
77
+ "freshChatOnFailure": {
78
+ "type": "boolean",
79
+ "default": true,
80
+ "description": "Try one same-project fresh chat recovery when prompt or submit controls are broken."
81
+ },
82
+ "editorWaitMs": {
83
+ "type": "integer",
84
+ "minimum": 1000,
85
+ "description": "Maximum time to wait for the Flow project editor to become usable."
86
+ },
87
+ "notes": {
88
+ "type": "string"
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "takomi-flow://schemas/result",
4
+ "title": "TakomiFlow Run Result",
5
+ "description": "Run metadata written by TakomiFlow browser, smoke, generate, and self-test commands.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": ["schemaVersion", "status", "runId"],
9
+ "properties": {
10
+ "schemaVersion": { "type": "integer", "const": 1 },
11
+ "status": {
12
+ "type": "string",
13
+ "enum": ["prepared", "ok", "downloaded", "manual_action_required", "blocked", "failed"]
14
+ },
15
+ "runId": { "type": "string" },
16
+ "command": { "type": "string" },
17
+ "kind": { "type": "string", "enum": ["video", "image"] },
18
+ "prompt": { "type": "string" },
19
+ "flowUrl": { "type": "string" },
20
+ "projectUrl": { "type": "string" },
21
+ "projectSession": { "type": "object" },
22
+ "settingsPlan": { "type": "object" },
23
+ "assets": {
24
+ "type": "array",
25
+ "items": { "type": "string" },
26
+ "default": []
27
+ },
28
+ "assetCatalogPath": { "type": "string" },
29
+ "screenshots": {
30
+ "type": "array",
31
+ "items": { "type": "string" },
32
+ "default": []
33
+ },
34
+ "errors": {
35
+ "type": "array",
36
+ "items": { "type": "string" },
37
+ "default": []
38
+ },
39
+ "manualActions": {
40
+ "type": "array",
41
+ "items": { "type": "string" },
42
+ "default": []
43
+ },
44
+ "metadataPath": { "type": "string" }
45
+ }
46
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "image",
4
+ "prompt": "Describe the image Flow should generate.",
5
+ "variations": 1,
6
+ "aspectRatio": "1:1",
7
+ "mode": "text-to-image",
8
+ "modelHint": "best-available",
9
+ "outputDir": "C:/Users/johno/.takomi-flow/runs",
10
+ "allowSpend": false,
11
+ "sourceAssets": [],
12
+ "projectUrl": "",
13
+ "reuseCurrentProject": true,
14
+ "allowNewProject": false,
15
+ "freshChatOnFailure": true,
16
+ "notes": "Set allowSpend=true only after explicit user approval."
17
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "video",
4
+ "prompt": "Describe the video Flow should generate.",
5
+ "variations": 1,
6
+ "aspectRatio": "16:9",
7
+ "durationSeconds": 4,
8
+ "mode": "text-to-video",
9
+ "modelHint": "best-available",
10
+ "outputDir": "C:/Users/johno/.takomi-flow/runs",
11
+ "allowSpend": false,
12
+ "extractFrames": 4,
13
+ "sourceAssets": [],
14
+ "projectUrl": "",
15
+ "reuseCurrentProject": true,
16
+ "allowNewProject": false,
17
+ "freshChatOnFailure": true,
18
+ "notes": "Set allowSpend=true only after explicit user approval."
19
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "takomi-flow",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "description": "Agent-first Google Flow browser automation for Codex.",
7
+ "scripts": {
8
+ "takomi-flow": "node scripts/takomi-flow.mjs",
9
+ "doctor": "node scripts/takomi-flow.mjs doctor",
10
+ "audit": "node scripts/takomi-flow.mjs audit",
11
+ "capabilities": "node scripts/takomi-flow.mjs capabilities",
12
+ "examples": "node scripts/takomi-flow.mjs examples",
13
+ "trusted-chrome": "node scripts/takomi-flow.mjs trusted-chrome",
14
+ "plan": "node scripts/takomi-flow.mjs plan",
15
+ "observe": "node scripts/takomi-flow.mjs observe",
16
+ "bootstrap": "node scripts/takomi-flow.mjs bootstrap",
17
+ "smoke": "node scripts/takomi-flow.mjs smoke",
18
+ "template": "node scripts/takomi-flow.mjs template",
19
+ "validate-request": "node scripts/takomi-flow.mjs validate",
20
+ "prepare-request": "node scripts/takomi-flow.mjs prepare",
21
+ "workflow": "node scripts/takomi-flow.mjs workflow",
22
+ "generate": "node scripts/takomi-flow.mjs generate",
23
+ "selftest": "node scripts/takomi-flow.mjs selftest",
24
+ "mcp": "node scripts/mcp-server.mjs",
25
+ "mcp-smoke": "node scripts/mcp-smoke.mjs",
26
+ "inspect": "node scripts/takomi-flow.mjs inspect",
27
+ "runs": "node scripts/takomi-flow.mjs runs",
28
+ "assets": "node scripts/takomi-flow.mjs assets",
29
+ "review": "node scripts/takomi-flow.mjs review",
30
+ "collect": "node scripts/takomi-flow.mjs collect",
31
+ "report": "node scripts/takomi-flow.mjs report"
32
+ },
33
+ "dependencies": {
34
+ "@modelcontextprotocol/sdk": "^1.29.0",
35
+ "playwright": "^1.61.1",
36
+ "zod": "^4.4.3"
37
+ }
38
+ }