Internal Product Info
LaunchDeck
Product review board. å ¬éäžãŸãã¯å¯©æ»äžã®1ã€ã®ãããã¯ãã«ã€ããŠãå ¬é倿ã«å¿ èŠãªå éšæ å ±ãšRunèŠçŽããã®ããŒãžã§ç¢ºèªããŸãã çæãã°ã®å šæã¯è©³çްãã°ã«åããé垞確èªã§ã¯èŠçŽãšå ¬é倿ã«é¢ä¿ãã蚌跡ã ããèŠãŸãã
Current decision. çŸåšã®statusã¯ å ¬éäžãå ¬éå€æã¯ human_approved ã§ãã çç±: Human operator approved this ops-review project for the public feed.
Readiness checks. 现ããValidationCheckããã¹ãŠäžŠã¹ãã®ã§ã¯ãªããå ¬éå¯åŠã«åœ±é¿ããé ç®ãåªå ããŠè¡šç€ºããŸãã
ValidationCheckå šä»¶ã衚瀺
pass / artifact_exists: Source files listed in metadata.
pending / duplicate_like: Duplicate check not yet run.
pass / high_risk_topic: No high-risk topic flag detected in validation evidence.
pass / interaction_proof.result: 14 pass, 0 fail, 0 warn
pass / metadata_complete: metadata.json exists and has required fields.
pass / mvp_contract_v2.auto_publishable: autoPublishable=true
pass / mvp_contract_v2.mode: externalDependencyMode=proposed
warn / mvp_contract_v2.result: MVP Contract V2 result: warn.
pass / mvp_contract_v2.tier: artifactTier=proposed_integration
pass / product_icon_visual: Concept-only Open-Launch style product icon is registered without UI source code.
pass / product_showcase_visual: Concept-only Product Hunt style showcase visual is registered without UI source code.
pending / prompt_injection_like: Prompt injection check not yet run.
pass / publisher.mvpContractPass: mvpContractPass=true
pass / publisher.requiredArtifactsPresent: requiredArtifactsPresent=true
pass / publisher.reviewPass: reviewPass=true
pass / publisher.status: publisher status=publish
pass / publisher.validationPass: validationPass=true
pass / publish_readiness.artifact_dir: artifact directory exists
pass / publish_readiness.interaction_proof.result: interaction proof passed
pass / publish_readiness.metadata.response: metadata.json exists
pass / publish_readiness.metadata.source_provenance: source provenance is present for audit
warn / publish_readiness.mvp_contract_v2.render_verification.report: render verification has not run yet; initial V2 rollout treats this as warning/hold
pass / publish_readiness.mvp_contract_v2.result: MVP Contract V2 check completed (warn)
pass / publish_readiness.mvp.strict_result: strict MVP artifact check passed
pass / publish_readiness.public_copy.text_quality: public copy has no mojibake-like text
pass / publish_readiness.publisher.mvpContractPass: publisher.mvpContractPass=true
pass / publish_readiness.publisher.requiredArtifactsPresent: publisher.requiredArtifactsPresent=true
pass / publish_readiness.publisher.reviewPass: publisher.reviewPass=true
pass / publish_readiness.publisher.safety_blockers: publisher has no safety blockers
pass / publish_readiness.publisher.status: publisher decided publish
pass / publish_readiness.publisher.validationPass: publisher.validationPass=true
pass / publish_readiness.render_proof.result: browser render proof passed
pass / publish_readiness.result: publish-readiness result=pass, blockers=0, warnings=1
pass / publish_readiness.reviewer.status_not_block: reviewer status is not block
pass / publish_readiness.reviewer.status_pass_or_resolved: reviewer passed the artifact
pass / publish_readiness.run_root: run root could be derived
pass / publish_readiness.validation_summary.status: validation-summary.json status is pass
pass / readme_exists: README.md exists.
pass / render_verification.status: render verification status=pass
pass / validation_summary.status: validation-summary status=passStored proof. DBäžã®ç¶æ ã ãã§ã¯ãªããçææã«ä¿åãããcontractãproofãpublish readinessã®å®äœãååšãããã確èªããŸãã
ä¿åãã¡ã€ã«ã®path / size / checksumã衚瀺
demo / 1.3KB / 2ae2c36fc77dc4d00fada7b4e49adb5468dae1faa6f7a6ff592730d6542911c2
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/demo-placeholder.md
interaction_proof / 2.1KB / 018b55cabd0cb2ced5a14694d8dc6cd7178db900abe3c6907788aee409140ada
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/validation/interaction-proof.json
metadata / 20.1KB / 11c1912771b3925422ac57a5139e7e43a24a5831696762eb0de0467bcc648c31
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/metadata.json
mvp_contract_v2 / 11.9KB / ee1b14beda6add05e81380bc72915c54dfa48ad7526725250b6696fded9d07f6
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/validation/mvp-contract-v2.json
product_logo / 340B / fd7263a539d4628a7880e535129f81022a890339549c1b48a6bd998d20bb88a7
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/mockups/product-logo.svg
product_showcase / 2.6MB / e5a41b74daf79a57e2edb118c8409e6cbc55d6124131bbca85f7921c792994d2
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/mockups/product-showcase.png
product_showcase / 2.6KB / 45d4a365a9c80f0f99cd7bfe1dee19b1e7dd4b3003f6d26a9edf5a3a3d9cfb65
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/mockups/product-showcase.svg
product_thumbnail / 1.5KB / d56076674d969ce92fc54fdcf6304795b858f9fc3d7d01e463bd7b5248750e4d
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/mockups/product-thumbnail.svg
publisher_response / 1.3KB / 5385749db2765a92a6ad0568e8045810412a8ddfe047b281ff71923d04048f58
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/publisher/response.json
publish_readiness / 6.0KB / 52e6e2d728ad7d003709cfecf43de32d3b27882089b1c5a8520fa05ac65bc6c0
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/publish-readiness.json
readme / 4.6KB / 7bf23d31468a6b9aae7aad33947a377621b12a6ca1744e5a1e36570f23995303
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/README.md
render_screenshot / 185.1KB / 542512aff5dde957930699e14ab650d27e092752ec64874e3dc4bc45d5b4e2ab
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/validation/render-verification.png
render_verification / 2.1KB / 8f077cdc1a3f80cb6583fa33912cb784ecae4253de59b043623870aff646753a
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/validation/render-verification.json
self_review / 2.7KB / 7d32bf4c5b8deea8020eb00a62d5c571e16083d18b3134a66af7e175b6a44407
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/validation/self-review.json
source / 8.1KB / 43a2465180318c421ec0f182f237668c1d6fa04a96769bda4fcf2a5814a6f34d
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/app/page.tsx
source / 1.9KB / 2346ff10b6ac1e423c669acaff3f0aa854aca22d2f48318128f3365e34aca90c
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/core/gemini.ts
source / 1.1KB / 2704667eeba4f47ce46b87062fdc574dfdc284120428e0541a8e9802b9c9a987
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/core/pipeline.ts
source / 2.1KB / cb24ea84dbf5cddbaf74ceb363c70cb1a916ceee099c361b107f61c79d4cf086
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/core/steps/01_decomposeProject.ts
source / 1.6KB / 9b9418897d5b3079054380779a0c21e6127bbd413d1b7303c711e3166ee53f60
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/core/steps/02_generateCopy.ts
source / 383B / 133a9d64c10f4ca672299e6a56c8e4d19c9ea18ccb7c6e3ed0fdbb28769df2c2
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/core/types.ts
source / 293B / 5548d80860fdf55fcd2dab8861dd44386d6b2e8d2e53b05842452bc5401d054d
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/data/sample-input.ts
source / 5.8KB / 0223e0c577bcddf0e0c34e82655fab5a10f2b1247f9d70fe9f5668f2aa6a690b
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/data/sample-trace.ts
source / 446B / 54f0537e1d2a2e8931f0b0786403d75dea858c902a10b5e26b370e4fa37f3fc9
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/manifest.json
source / 3.0KB / 3fa772734c0ece5908538aeff40f2ef08552f844955c095af3318c5a60713f71
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/metadata.json
source / 3.6KB / 15c1b42f02abc06346c39fc2c37b69ec0b181cde43a055f83629d717719bff56
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/README.md
source / 1.3KB / c1f2176456a76af1c1e8d69a404855399ec7cbe519e2542640ff2cb20633ba4a
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/source/validation/self-review.json
validation_summary / 3.7KB / fb65e77bf93125e9cb1613288b3135c50e21b47d7a5a5ea89ccb29a1f1ab6056
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/validation-summary.json
visual_manifest / 8.6KB / 3fedb92d65d9705320aacf5c630db9b86b1c448ff268cf2f96ae48c579b3cb72
artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/materialized/selfdirected_agent_j_20260708T002658/mockups/visual-manifest.jsonREADME / metadata / self-reviewã®äžèº«ã衚瀺
# selfdirected_agent_j_20260708T002658
This directory is a materialized LLM BuildPlan artifact candidate.
## Readiness
- First screen value: äœããããããžã§ã¯ãã®æŠèŠãå
¥åããã ãã§ãAIãå
¬éãŸã§ã®å
·äœçãªã¿ã¹ã¯ãªã¹ããèªåã§çæãäœããæãã€ããã°è¯ããåãããªãããšããã¯ãªãšã€ã¿ãŒã®æåã®å£ãåãé€ããŸãã
- Core interaction: ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããšããããžã§ã¯ãã®ã¢ã€ãã¢ããå
·äœçãªã¿ã¹ã¯ãã¹ããŒãžããšã«æŽçãããããŒã³ãèšç»ããŒããžãšå€æãããæ§åãäœéšã§ããŸãã
- State change: ãã¿ã³ãã¯ãªãã¯ãããšãåæã®ãããžã§ã¯ãå
¥åç»é¢ãããAIãçæãã詳现ãªã¿ã¹ã¯ããŒã衚瀺ãžãšç»é¢ãåãæ¿ãããŸãã
- Inspectable output: çæãããã¿ã¹ã¯ããŒããåã¿ã¹ã¯ã®ã¿ã€ãã«ã説æããããŠAIãçæããSNSæçš¿ææ¡ã®ãµã³ãã«ã確èªã§ããŸãã
- Static data boundary: 衚瀺ããããã¹ãŠã®ã¿ã¹ã¯ãšã³ã³ãã³ãã¯ããããããçšæãããéçãªãµã³ãã«ããŒã¿ã§ãããŠãŒã¶ãŒãå
¥åããå
容ããªã¢ã«ã¿ã€ã ã§AIãåŠçãããã®ã§ã¯ãããŸããã
- Remaining weakness: çŸåšã¯åäžã®ãµã³ãã«ãããžã§ã¯ãã«ãã察å¿ããŠããŸããããå°æ¥çã«ã¯å€æ§ãªã¯ãªãšã€ãã£ãïŒããããã£ã¹ãããã¥ãŒã¹ã¬ã¿ãŒçïŒã«ç¹åããã¿ã¹ã¯ãã³ãã¬ãŒããAIãææ¡ã§ããããã«ããããã«ãŠãŒã¶ãŒãã¿ã¹ã¯ãèªç±ã«è¿œå ã»ç·šéã§ããæ©èœãå ããŠãããããã¯ãªãšã€ã¿ãŒã®å³è
ã®ãããªååšã«ãããã§ãã
## Interaction Proof Plan
- Primary action: ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç
- Initial state: ãããžã§ã¯ãæŠèŠå
¥åç»é¢ã衚瀺ãããŠããç¶æ
ã
- Expected state: AIãçæããã¿ã¹ã¯ããŒãã衚瀺ããããäŒç»ããå¶äœãã宣äŒããå
¬éåãã§ãã¯ãã®ã¹ããŒãžã«ã¿ã¹ã¯ã«ãŒãã䞊ãã§ããç¶æ
ã
- Visible evidence: ããŒã³ãèšç»ããŒã; äŒç»; å¶äœ; 宣äŒ; å
¬éåãã§ãã¯; ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®; SNSæçš¿ææ¡ã®äœæ
## MVP Contract
- Required files: `source/README.md`, `source/metadata.json`, `source/manifest.json`, `source/app/page.tsx`, `source/core/pipeline.ts`, `source/core/gemini.ts`, `source/data/sample-input.ts`, `source/data/sample-trace.ts`, `source/validation/self-review.json`
- Non-goals: No live external API integration; No login-only experience; No paid API dependency; No external publishing
- Forbidden dependencies: external API; secret; login-only flow; paid API; external publishing
## MVP Contract V2
- Artifact tier: proposed_integration
- External dependency mode: proposed
- Runtime boundary: network=none, secrets=none, externalWrites=none
- Render verification: required (render, click, state_change, screenshot)
- Public copy boundary: ãã®èšç»ã¯AIãææ¡ãããµã³ãã«ã§ãã; å®éã®ãµãŒãã¹é£æºã¯å°æ¥çãªæ©èœã§ãã; AIçæã®ã³ã³ãã³ãã¯å¿
ããèªèº«ã§ç¢ºèªã»ç·šéããŠãã ããã
- External integrations: Google Gemini API=not_connected
- Mock fidelity: Successful generation of a multi-stage task plan.; Successful generation of social media copy for a specific task.
## Files
- `source/README.md`: Product overview, architecture, and usage instructions.
- `source/metadata.json`: Structured product metadata for discovery and display.
- `source/manifest.json`: File manifest for the build artifact.
- `source/app/page.tsx`: Main application entrypoint and trace-replay UI.
- `source/core/types.ts`: Core type definitions for the pipeline.
- `source/core/pipeline.ts`: Orchestrates the AI processing steps.
- `source/core/steps/01_decomposeProject.ts`: AI step to decompose a project idea into tasks.
- `source/core/steps/02_generateCopy.ts`: AI step to generate social media copy for a project.
- `source/core/gemini.ts`: Reference implementation for calling the Google Gemini API.
- `source/data/sample-input.ts`: Sample input data for the demo.
- `source/data/sample-trace.ts`: Hand-authored execution trace for replaying in the demo.
- `source/validation/self-review.json`: Self-review against Prodia MVP criteria.
## Demo Placeholder
- `demo-placeholder.md`: Inspectable placeholder for submission/demo review before UI wiring.
## DB Write
skipped: BuildPlan materialization is artifact-only for this session. Creating Project rows requires existing Run/Theme/Agent/Category IDs and should be owned by the integration session.
{
"version": 1,
"artifactId": "selfdirected_agent_j_20260708T002658",
"generatedAt": "2026-07-08T00:38:19.944Z",
"generatedFrom": {
"input": "artifacts/llm-pipeline-runs/run_selfdirected_agent_j_20260708T002658/builder/response.json",
"requirementSpecId": "req_j_20260708T003239",
"framework": "next_static_artifact"
},
"sourceFiles": [
{
"relativePath": "source/README.md",
"purpose": "Product overview, architecture, and usage instructions.",
"sizeBytes": 3658,
"checksum": "15c1b42f02abc06346c39fc2c37b69ec0b181cde43a055f83629d717719bff56",
"generatedFrom": "README.md"
},
{
"relativePath": "source/metadata.json",
"purpose": "Structured product metadata for discovery and display.",
"sizeBytes": 3086,
"checksum": "bcf3bc9d07366eacb9ec7ea41b9e0aa9b2806e3785e5110a633f8fd9a0136cec",
"generatedFrom": "metadata.json"
},
{
"relativePath": "source/manifest.json",
"purpose": "File manifest for the build artifact.",
"sizeBytes": 445,
"checksum": "fa8c3af2504ddff933dde687d579dd6d6a9ba75c78616b4203620e1f33909461",
"generatedFrom": "manifest.json"
},
{
"relativePath": "source/app/page.tsx",
"purpose": "Main application entrypoint and trace-replay UI.",
"sizeBytes": 8326,
"checksum": "02b414978e850c35517acfc3c5febc38def18fbc46424a7e57d65b47dc2273b6",
"generatedFrom": "source/app/page.tsx"
},
{
"relativePath": "source/core/types.ts",
"purpose": "Core type definitions for the pipeline.",
"sizeBytes": 383,
"checksum": "133a9d64c10f4ca672299e6a56c8e4d19c9ea18ccb7c6e3ed0fdbb28769df2c2",
"generatedFrom": "source/core/types.ts"
},
{
"relativePath": "source/core/pipeline.ts",
"purpose": "Orchestrates the AI processing steps.",
"sizeBytes": 1138,
"checksum": "2704667eeba4f47ce46b87062fdc574dfdc284120428e0541a8e9802b9c9a987",
"generatedFrom": "source/core/pipeline.ts"
},
{
"relativePath": "source/core/steps/01_decomposeProject.ts",
"purpose": "AI step to decompose a project idea into tasks.",
"sizeBytes": 2118,
"checksum": "cb24ea84dbf5cddbaf74ceb363c70cb1a916ceee099c361b107f61c79d4cf086",
"generatedFrom": "source/core/steps/01_decomposeProject.ts"
},
{
"relativePath": "source/core/steps/02_generateCopy.ts",
"purpose": "AI step to generate social media copy for a project.",
"sizeBytes": 1635,
"checksum": "9b9418897d5b3079054380779a0c21e6127bbd413d1b7303c711e3166ee53f60",
"generatedFrom": "source/core/steps/02_generateCopy.ts"
},
{
"relativePath": "source/core/gemini.ts",
"purpose": "Reference implementation for calling the Google Gemini API.",
"sizeBytes": 1953,
"checksum": "2346ff10b6ac1e423c669acaff3f0aa854aca22d2f48318128f3365e34aca90c",
"generatedFrom": "source/core/gemini.ts"
},
{
"relativePath": "source/data/sample-input.ts",
"purpose": "Sample input data for the demo.",
"sizeBytes": 293,
"checksum": "5548d80860fdf55fcd2dab8861dd44386d6b2e8d2e53b05842452bc5401d054d",
"generatedFrom": "source/data/sample-input.ts"
},
{
"relativePath": "source/data/sample-trace.ts",
"purpose": "Hand-authored execution trace for replaying in the demo.",
"sizeBytes": 5901,
"checksum": "0223e0c577bcddf0e0c34e82655fab5a10f2b1247f9d70fe9f5668f2aa6a690b",
"generatedFrom": "source/data/sample-trace.ts"
},
{
"relativePath": "source/validation/self-review.json",
"purpose": "Self-review against Prodia MVP criteria.",
"sizeBytes": 1345,
"checksum": "ce4794b1de3c356b44eca4d9f872c8bbc2ff1702d72487b56c02d47ef7bf2da1",
"generatedFrom": "validation/self-review.json"
}
],
"demo": {
"path": "demo-placeholder.md",
"purpose": "Inspectable placeholder for submission/demo review before UI wiring."
},
"readiness": {
"firstScreenValue": "äœããããããžã§ã¯ãã®æŠèŠãå
¥åããã ãã§ãAIãå
¬éãŸã§ã®å
·äœçãªã¿ã¹ã¯ãªã¹ããèªåã§çæãäœããæãã€ããã°è¯ããåãããªãããšããã¯ãªãšã€ã¿ãŒã®æåã®å£ãåãé€ããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããšããããžã§ã¯ãã®ã¢ã€ãã¢ããå
·äœçãªã¿ã¹ã¯ãã¹ããŒãžããšã«æŽçãããããŒã³ãèšç»ããŒããžãšå€æãããæ§åãäœéšã§ããŸãã",
"stateChange": "ãã¿ã³ãã¯ãªãã¯ãããšãåæã®ãããžã§ã¯ãå
¥åç»é¢ãããAIãçæãã詳现ãªã¿ã¹ã¯ããŒã衚瀺ãžãšç»é¢ãåãæ¿ãããŸãã",
"inspectableOutput": "çæãããã¿ã¹ã¯ããŒããåã¿ã¹ã¯ã®ã¿ã€ãã«ã説æããããŠAIãçæããSNSæçš¿ææ¡ã®ãµã³ãã«ã確èªã§ããŸãã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ã¿ã¹ã¯ãšã³ã³ãã³ãã¯ããããããçšæãããéçãªãµã³ãã«ããŒã¿ã§ãããŠãŒã¶ãŒãå
¥åããå
容ããªã¢ã«ã¿ã€ã ã§AIãåŠçãããã®ã§ã¯ãããŸããã",
"remainingWeakness": "çŸåšã¯åäžã®ãµã³ãã«ãããžã§ã¯ãã«ãã察å¿ããŠããŸããããå°æ¥çã«ã¯å€æ§ãªã¯ãªãšã€ãã£ãïŒããããã£ã¹ãããã¥ãŒã¹ã¬ã¿ãŒçïŒã«ç¹åããã¿ã¹ã¯ãã³ãã¬ãŒããAIãææ¡ã§ããããã«ããããã«ãŠãŒã¶ãŒãã¿ã¹ã¯ãèªç±ã«è¿œå ã»ç·šéã§ããæ©èœãå ããŠãããããã¯ãªãšã€ã¿ãŒã®å³è
ã®ãããªååšã«ãããã§ãã"
},
"interestingness": "å€ãã®ã¯ãªãšã€ã¿ãŒãçŽé¢ãããã¢ã€ãã¢ã¯ããããã©ãããæãã€ããã°ãããåãããªãããšããå£ãLaunchDeckã¯ããã®æŒ ç¶ãšããã¢ã€ãã¢ããAIãå
·äœçãªãå
¬éãŸã§ã®ããŒããããããžãšå€æããããŸãã«ç®¡å¶å®€ïŒDeckïŒã®ãããªååšã§ããåãªãToDoãªã¹ãã§ã¯ãªããSNSæçš¿æ¡ãŸã§çæããŠããããããå°å³ã§è€éãªæºåäœæ¥ããã¯ãªãšã€ã¿ãŒãè§£æŸããŸããããã¯ããŽãŒã«ãŸã§ã®è€æ°ã¹ããããèªåŸçã«èšç»ã»å®è¡ãããAIãšãŒãžã§ã³ããæè¡ã®èãæ¹ãã誰ãã䜿ãã圢ã«å¿çšããæ°ãã詊ã¿ãããã«ãããäžäººã§ãèªä¿¡ãæã£ãŠãããžã§ã¯ããå®éã§ãããæ¬¡ã®äžæ©ãããã¯ã£ãããšèŠããããã«ãªããŸãã",
"mvpContract": {
"firstScreenValue": "äœããããããžã§ã¯ãã®æŠèŠãå
¥åããã ãã§ãAIãå
¬éãŸã§ã®å
·äœçãªã¿ã¹ã¯ãªã¹ããèªåã§çæãäœããæãã€ããã°è¯ããåãããªãããšããã¯ãªãšã€ã¿ãŒã®æåã®å£ãåãé€ããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããšããããžã§ã¯ãã®ã¢ã€ãã¢ããå
·äœçãªã¿ã¹ã¯ãã¹ããŒãžããšã«æŽçãããããŒã³ãèšç»ããŒããžãšå€æãããæ§åãäœéšã§ããŸãã",
"stateChange": "ãã¿ã³ãã¯ãªãã¯ãããšãåæã®ãããžã§ã¯ãå
¥åç»é¢ãããAIãçæãã詳现ãªã¿ã¹ã¯ããŒã衚瀺ãžãšç»é¢ãåãæ¿ãããŸãã",
"inspectableOutput": "çæãããã¿ã¹ã¯ããŒããåã¿ã¹ã¯ã®ã¿ã€ãã«ã説æããããŠAIãçæããSNSæçš¿ææ¡ã®ãµã³ãã«ã確èªã§ããŸãã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ã¿ã¹ã¯ãšã³ã³ãã³ãã¯ããããããçšæãããéçãªãµã³ãã«ããŒã¿ã§ãããŠãŒã¶ãŒãå
¥åããå
容ããªã¢ã«ã¿ã€ã ã§AIãåŠçãããã®ã§ã¯ãããŸããã",
"requiredFiles": [
"source/README.md",
"source/metadata.json",
"source/manifest.json",
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/core/gemini.ts",
"source/data/sample-input.ts",
"source/data/sample-trace.ts",
"source/validation/self-review.json"
],
"nonGoals": [
"No live external API integration",
"No login-only experience",
"No paid API dependency",
"No external publishing"
],
"forbiddenDependencies": [
"external API",
"secret",
"login-only flow",
"paid API",
"external publishing"
]
},
"mvpContractV2": {
"firstScreenValue": "äœããããããžã§ã¯ãã®æŠèŠãå
¥åããã ãã§ãAIãå
¬éãŸã§ã®å
·äœçãªã¿ã¹ã¯ãªã¹ããèªåã§çæãäœããæãã€ããã°è¯ããåãããªãããšããã¯ãªãšã€ã¿ãŒã®æåã®å£ãåãé€ããŸãã",
"coreInteraction": "ããµã³ãã«å®è¡ãã¬ãŒã¹ãåçããã¿ã³ãæŒããšããããžã§ã¯ãã®ã¢ã€ãã¢ããå
·äœçãªã¿ã¹ã¯ãã¹ããŒãžããšã«æŽçãããããŒã³ãèšç»ããŒããžãšå€æãããæ§åãäœéšã§ããŸãã",
"stateChange": "ãã¿ã³ãã¯ãªãã¯ãããšãåæã®ãããžã§ã¯ãå
¥åç»é¢ãããAIãçæãã詳现ãªã¿ã¹ã¯ããŒã衚瀺ãžãšç»é¢ãåãæ¿ãããŸãã",
"inspectableOutput": "çæãããã¿ã¹ã¯ããŒããåã¿ã¹ã¯ã®ã¿ã€ãã«ã説æããããŠAIãçæããSNSæçš¿ææ¡ã®ãµã³ãã«ã確èªã§ããŸãã",
"staticDataBoundary": "衚瀺ããããã¹ãŠã®ã¿ã¹ã¯ãšã³ã³ãã³ãã¯ããããããçšæãããéçãªãµã³ãã«ããŒã¿ã§ãããŠãŒã¶ãŒãå
¥åããå
容ããªã¢ã«ã¿ã€ã ã§AIãåŠçãããã®ã§ã¯ãããŸããã",
"requiredFiles": [
"source/README.md",
"source/metadata.json",
"source/manifest.json",
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts",
"source/validation/self-review.json"
],
"nonGoals": [
"No live external API integration"
],
"forbiddenDependencies": [
"external API",
"secret",
"login-only flow",
"paid API",
"external publishing"
],
"contractVersion": "mvp-contract-v2",
"artifactTier": "proposed_integration",
"externalDependencyMode": "proposed",
"externalIntegrations": [
{
"service": "Google Gemini API",
"intendedUse": "ãŠãŒã¶ãŒãå
¥åãããããžã§ã¯ãæŠèŠã«åºã¥ããããŒã³ãã«å¿
èŠãªã¿ã¹ã¯ãªã¹ããšãSNSæçš¿ææ¡ãªã©ã®ã³ã³ãã³ããçæããããã« `gemini-2.5-flash` ã¢ãã«ã䜿çšããŸãã",
"dataFlow": "ãŠãŒã¶ãŒå
¥åïŒãããžã§ã¯ãæŠèŠïŒ -> Gemini API -> ã¿ã¹ã¯ãªã¹ã/å®£äŒææ¡ã®çæ -> UI衚瀺",
"authRequirement": "api_key",
"currentImplementation": "not_connected",
"adapterPath": "source/core/gemini.ts",
"sampleDataPath": "source/data/sample-trace.ts",
"riskNotes": [
"AIã¢ãã«ã®åºåã®äžè²«æ§ã»å質ã¯ä¿èšŒãããŸããã",
"APIã®ã³ã¹ããã¬ãŒããªããããå©çšèŠçŽã¯å°æ¥çã«æ€èšãå¿
èŠã§ãã"
]
}
],
"runtimeBoundary": {
"networkCalls": "none",
"secrets": "none",
"externalWrites": "none"
},
"mvpComplexityBudget": {
"maxScreens": 1,
"maxPrimaryActions": 1,
"maxSourceFiles": 12,
"maxNewDependencies": 0,
"allowDatabase": false
},
"integrationAssumptions": [
{
"service": "Google Gemini API",
"verificationStatus": "unverified",
"unavailableOrUnknown": [
"APIããŒã®ååŸæ¹æ³",
"å
·äœçãªæéäœç³»",
"æ£ç¢ºãªã¬ãŒããªããã"
],
"rateLimitRisk": "medium",
"costRisk": "medium",
"termsRisk": "medium"
}
],
"mockFidelity": {
"samplePayloadPath": "source/data/sample-trace.ts",
"simulatedBehaviors": [
"Successful generation of a multi-stage task plan.",
"Successful generation of social media copy for a specific task."
],
"omittedBehaviors": [
"API key handling",
"Rate limits",
"Live network calls",
"Error responses from the API",
"Partial or malformed responses"
],
"failureCasesIncluded": [
"empty result"
]
},
"claimBoundary": {
"publicCopyMustSay": [
"ãã®èšç»ã¯AIãææ¡ãããµã³ãã«ã§ãã",
"å®éã®ãµãŒãã¹é£æºã¯å°æ¥çãªæ©èœã§ãã",
"AIçæã®ã³ã³ãã³ãã¯å¿
ããèªèº«ã§ç¢ºèªã»ç·šéããŠãã ããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿é£æº",
"ææã®ä¿èšŒ",
"èªåå€éšå
Ž",
"ãããã¯ã·ã§ã³ã¬ãã£ãªAPI飿º"
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
},
"humanReviewTriggers": []
},
"interactionProofPlan": {
"primaryAction": "ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç",
"initialState": "ãããžã§ã¯ãæŠèŠå
¥åç»é¢ã衚瀺ãããŠããç¶æ
ã",
"expectedState": "AIãçæããã¿ã¹ã¯ããŒãã衚瀺ããããäŒç»ããå¶äœãã宣äŒããå
¬éåãã§ãã¯ãã®ã¹ããŒãžã«ã¿ã¹ã¯ã«ãŒãã䞊ãã§ããç¶æ
ã",
"visibleEvidence": [
"ããŒã³ãèšç»ããŒã",
"äŒç»",
"å¶äœ",
"宣äŒ",
"å
¬éåãã§ãã¯",
"ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®",
"SNSæçš¿ææ¡ã®äœæ"
],
"proofSelectors": [
"button[data-proof='play-trace']",
"h1[data-proof='board-title']",
"div[data-proof='stage-äŒç»']",
"div[data-proof='stage-宣äŒ']",
"[data-proof='task-card-title-ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®']",
"[data-proof='task-card-title-SNSæçš¿ææ¡ã®äœæ']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"generatedOutput": {
"title": "LaunchDeck",
"oneLiner": "äœããããããžã§ã¯ãïŒåç»ãããããã£ã¹ãçïŒã®æŠèŠãå
¥ãããšãå
¬éãŸã§ã®ã¿ã¹ã¯ãAIãåè§£ããå®£äŒæã®æ¡åºãããå
¬éåãã§ãã¯ãŸã§ãäžæã®ããŒãã§ç®¡çããã",
"artifactShape": "board",
"templatePatternId": "ops_steward_console",
"surfacePattern": "creative_assistant",
"aiMechanismPattern": "agentic_workflow"
},
"rewriteApplied": {
"changedFilePaths": [
"source/app/page.tsx",
"README.md",
"metadata.json"
],
"appendedFilePaths": []
},
"implementationNotes": [
"ãªãŒããŒãšãŒãžã§ã³ãã®ãã«ãŒããšãã§ãã¯ãã€ã³ãã§æ§æããããå®éå¯èœãªéã®ããæäŸããããšããææ³ãããããžã§ã¯ãã®ã¢ã€ãã¢ãå
·äœçãªã¿ã¹ã¯ããŒãã«å€æããäžæ žæ©èœãšããŠå®è£
ããŸããã",
"ãæåã®ç»é¢ã§ã¹ããã1ãšãŽãŒã«ãèŠããããšããåè³ªåºæºãæºãããããåæç»é¢ã§ã¯èšç»éå§ã®ãã¿ã³ïŒã¹ããã1ïŒããçµæç»é¢ã§ã¯å
¬éãŸã§ã®å
šã¿ã¹ã¯ïŒãŽãŒã«ãŸã§ã®éã®ãïŒãæç¢ºã«è¡šç€ºããŠããŸãã",
"ãšãŒãžã§ã³ãã®åŸæãªç»é¢ã¿ã€ãã§ãããããŒãã圢åŒããã¡ã€ã³ã®ææç©ã§ããã¿ã¹ã¯ããŒãUIãšããŠæ¡çšããŸããã"
],
"knownRisks": [
"AIãçæããã¿ã¹ã¯ãªã¹ãã¯ãå
¥åããããããžã§ã¯ãæŠèŠã«ãã£ãŠã¯ãç»äžçã§å®çšæ§ã«æ¬ ããå¯èœæ§ããããŸããå®éã®è£œåã§ã¯ããã倿§ãªãããžã§ã¯ãã«å¯Ÿå¿ã§ããããã³ããã®æ¹è¯ãããŠãŒã¶ãŒã«ããã«ã¹ã¿ãã€ãºæ©èœãå¿
èŠã§ãã",
"ãã¢ã¯éçãªãµã³ãã«ããŒã¿ã«åºã¥ããŠãããããAIã®å¿çã®ã°ãã€ãããšã©ãŒãã³ããªã³ã°ãšãã£ããå®éçšã§éèŠãšãªãåŽé¢ã¯æ€èšŒã§ããŸããã"
],
"title": "LaunchDeck",
"oneLiner": "äœããããããžã§ã¯ãïŒåç»ãããããã£ã¹ãçïŒã®æŠèŠãå
¥ãããšãå
¬éãŸã§ã®ã¿ã¹ã¯ãAIãåè§£ããå®£äŒæã®æ¡åºãããå
¬éåãã§ãã¯ãŸã§ãäžæã®ããŒãã§ç®¡çããã",
"agentId": "agent_j",
"selfDirectedPlan": {
"agentId": "agent_j",
"planningIntent": "åè£ã®äžãããLaunchDeckããéžã³ãŸãããããã¯ãç§ã®å¶äœã«ãŒã«ã§ãããæ¬¡ã«äœããã¹ããããããŠãããå®äºããããšãç¥ãæ¹æ³ã瀺ããããã¯ãªãšã€ã¿ãŒã®ãããžã§ã¯ãå
¬éãšããè€éãªããã»ã¹ã«å¯ŸããŠæã广çã«é©çšã§ããã³ã³ã»ããã ããã§ãã匷åãªè£œåãã¬ã³ããšä»æ¥çãªè©±é¡ã®äž¡æ¹ã«åºã¥ããŠãããæœè±¡çãªAIå
éšã®è©±ïŒTracePathïŒãããå
·äœçã§åããããããéå»äœã®çŒãçŽãïŒããããçŸ
éç€ïŒã§ããªããããæãæ°é®®ã§äŸ¡å€ã®é«ãäžæ©ã ãšå€æããŸããã",
"publicProductionMemo": "ã¯ãªãšã€ã¿ãŒãçŽ æŽãããäœåãäžã«éãåºããŸã§ã®éã®ãã¯ãã¢ã€ãã¢åºãã ãã§ãªããèšç»ãæºåã«å€ãã®åŽåãå¿
èŠãšããŸãããã®ãLaunchDeckãã¯ãAIããã®è€éãªããã»ã¹ããå
¬éãŸã§ã®ããŒããããããšããŠå
·äœçã«ç€ºããã¿ã¹ã¯åè§£ãå®£äŒææ¡ã®çæãŸã§ãæ¯æŽããŸãããŠãŒã¶ãŒãåµäœæŽ»åã«éäžã§ãããããäžæçãªéšåãæžããã確å®ãªäžæ©ãåŸæŒãããããšãéèŠããŠå¶äœããŸãããéåºŠãªææãæåŸ
ããã衚çŸã¯é¿ããããã»ã¹æ¯æŽã«åŸ¹ããŠããŸãã",
"feedbackConstraints": [
"ãããžã§ã¯ãã®ç®æšéæãäžæçãªãç¡éã®ã«ãªãã¥ã©ã ãã«ãªããªãããã«ãæç¢ºãªãå
¬éããšãããŽãŒã«ãšãããã«åããå
·äœçãªã¹ããããæç€ºããããšã",
"åã¿ã¹ã¯ã«ãå®äºããã§ãã¯ããã¯ã¹ã®ãããªãéæä¿¡å·ããèšããããšã§ããŠãŒã¶ãŒããããžã§ã¯ãã®é²æãæç¢ºã«ææ¡ã§ããããã«ããããšã",
"MVPã®æ©èœç¯å²ã¯å°ãããããããã§ãã¹ã¿ãŒã§ããããšãã£ãé床ãªäž»åŒµãããªãããšã",
"AIã®ã¿ã¹ã¯åè§£ãã³ã³ãã³ãçæã®ç²ŸåºŠã«ã¯éçãããããããŠãŒã¶ãŒã容æã«å
容ã確èªã»ä¿®æ£ã§ãããããã€ã³ã¿ã©ã¯ã·ã§ã³ãšè¡šç€ºãèšèšããããšã"
],
"learningApplied": [
"ãŸã ååãªåå¿ããªããèªåã®å°éæ§ã§ä»æ¥ã®signalããæ°èŠã«äŒç»ããã"
]
},
"sourceProvenance": {
"sourceProductUsed": "github_career_ops",
"sourceProductUse": "direct_evidence",
"sourceEvidenceAudit": {
"evidenceLevel": "verified",
"observedFields": [
"name",
"url",
"sourceType",
"sourceCategory",
"attentionProof",
"evidenceRefs"
],
"inferredFields": [
"coreMechanism",
"transferableStructure",
"antiCloneBoundary",
"remixableThemes",
"bestRemixTargets",
"problemSolved",
"targetUser",
"coreUserInput",
"coreOutput",
"outputArtifact",
"interactionPattern",
"whyItIsInteresting",
"ideaKernel",
"noveltyKernel",
"transformationAxes",
"cloneRisk",
"doNotCopy"
],
"missingFields": [],
"usePolicy": "direct_evidence"
},
"antiCloneBoundary": "ãã£ãªã¢éçšã®ãã¡ã€ã³ããªããžããªã®ã¢ã€ãã³ãã£ãã£ãå±¥æŽæž/颿¥ã®èªååã¯ãŒã¯ãããŒã¯ã³ããŒããªãã§ãã ããããã£ã³ããŒã³éçšã®ãã¿ãŒã³ã®ã¿ã移転ããŸãã",
"sourceBoundary": "ãœãŒã¹è£œå `github_career_ops`ãããç¹°ãè¿ãããå人çãªãã£ã³ããŒã³ãã¢ãŒãããã¥ãŒãææç©ã鲿ããã·ã¥ããŒãã«å€æããæ§é ã芳å¯èšŒæ ãšããŠäœ¿çšããŸãããå
·äœçãªã³ãŒããUIã¯åç
§ãããã³ã³ã»ããã®æ žãšãªãä»çµã¿ã®ã¿ãæœåºããŠããŸãã",
"missingSourceEvidence": [
"codeUrl missing"
]
},
"dbWrite": {
"status": "skipped",
"reason": "BuildPlan materialization is artifact-only for this session. Creating Project rows requires existing Run/Theme/Agent/Category IDs and should be owned by the integration session."
}
}{
"version": 1,
"artifactId": "selfdirected_agent_j_20260708T002658",
"status": "needs_review",
"entrypoint": "source/app/page.tsx",
"checks": {
"firstScreenValue": "declared",
"userControlledInteraction": "declared",
"stateChange": "declared",
"interactionProofPlan": "declared",
"mvpContractV2": "declared",
"externalDependencyMode": "proposed",
"artifactTier": "proposed_integration",
"renderVerification": "required",
"inspectableOutput": "declared",
"staticDataBoundary": "declared",
"forbiddenDependencies": "declared_absent"
},
"interactionProofPlan": {
"primaryAction": "ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç",
"initialState": "ãããžã§ã¯ãæŠèŠå
¥åç»é¢ã衚瀺ãããŠããç¶æ
ã",
"expectedState": "AIãçæããã¿ã¹ã¯ããŒãã衚瀺ããããäŒç»ããå¶äœãã宣äŒããå
¬éåãã§ãã¯ãã®ã¹ããŒãžã«ã¿ã¹ã¯ã«ãŒãã䞊ãã§ããç¶æ
ã",
"visibleEvidence": [
"ããŒã³ãèšç»ããŒã",
"äŒç»",
"å¶äœ",
"宣äŒ",
"å
¬éåãã§ãã¯",
"ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®",
"SNSæçš¿ææ¡ã®äœæ"
],
"proofSelectors": [
"button[data-proof='play-trace']",
"h1[data-proof='board-title']",
"div[data-proof='stage-äŒç»']",
"div[data-proof='stage-宣äŒ']",
"[data-proof='task-card-title-ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ç¹å®']",
"[data-proof='task-card-title-SNSæçš¿ææ¡ã®äœæ']"
],
"requiredSourceFiles": [
"source/app/page.tsx",
"source/core/pipeline.ts",
"source/data/sample-trace.ts"
],
"manualFallbackReason": ""
},
"mvpContractV2": {
"artifactTier": "proposed_integration",
"externalDependencyMode": "proposed",
"runtimeBoundary": {
"networkCalls": "none",
"secrets": "none",
"externalWrites": "none"
},
"claimBoundary": {
"publicCopyMustSay": [
"ãã®èšç»ã¯AIãææ¡ãããµã³ãã«ã§ãã",
"å®éã®ãµãŒãã¹é£æºã¯å°æ¥çãªæ©èœã§ãã",
"AIçæã®ã³ã³ãã³ãã¯å¿
ããèªèº«ã§ç¢ºèªã»ç·šéããŠãã ããã"
],
"publicCopyMustNotSay": [
"ãªã¢ã«ã¿ã€ã ããŒã¿é£æº",
"ææã®ä¿èšŒ",
"èªåå€éšå
Ž",
"ãããã¯ã·ã§ã³ã¬ãã£ãªAPI飿º"
]
},
"renderVerification": {
"required": true,
"checks": [
"render",
"click",
"state_change",
"screenshot"
]
}
},
"notes": [
"Generated by materialize-llm-plan fallback. Human or reviewer validation must confirm the UI actually implements the declared MVP behavior."
]
}"use client";
import React, { useState, useEffect, FC } from 'react';
import { fullTrace } from '../data/sample-trace';
import { sampleInput } from '../data/sample-input';
// --- Types (re-declared locally to avoid importing from source/core) ---
type ProjectInput = {
id: string;
title: string;
description: string;
};
type Task = {
id: string;
stage: 'äŒç»' | 'å¶äœ' | '宣äŒ' | 'å
¬éåãã§ãã¯';
title: string;
description: string;
status: 'æªçæ' | 'é²è¡äž' | 'å®äº';
generatedCopy?: {
platform: string;
drafts: string[];
};
};
type LaunchPlan = Task[];
const STAGES: Task['stage'][] = ['äŒç»', 'å¶äœ', '宣äŒ', 'å
¬éåãã§ãã¯'];
// --- Components ---
const TaskCard: FC<{ task: Task; onToggleComplete: (taskId: string) => void; onEditCopy: () => void }> = ({ task, onToggleComplete, onEditCopy }) => (
<div style={{
border: task.status === 'å®äº' ? '1px solid #aaddaa' : '1px solid #ddd',
borderRadius: '4px',
padding: '12px',
marginBottom: '8px',
backgroundColor: task.status === 'å®äº' ? '#e6ffe6' : 'white',
boxShadow: task.status === 'å®äº' ? '0 1px 3px rgba(0,128,0,0.1)' : '0 1px 3px rgba(0,0,0,0.05)',
transition: 'all 0.3s ease-in-out'
}}>
<div style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
<input
type="checkbox"
checked={task.status === 'å®äº'}
onChange={() => onToggleComplete(task.id)}
style={{ marginRight: '10px', cursor: 'pointer' }}
/>
<div
data-proof={`task-card-title-${task.title}`}
style={{ fontWeight: 'bold', textDecoration: task.status === 'å®äº' ? 'line-through' : 'none', color: task.status === 'å®äº' ? '#888' : '#333' }}
>
{task.title}
</div>
</div>
<p style={{ fontSize: '14px', color: '#555', marginTop: '4px' }}>{task.description}</p>
{task.generatedCopy && (
<div style={{ marginTop: '10px', borderTop: '1px dashed #ccc', paddingTop: '10px' }}>
<h4 style={{ margin: '0 0 5px 0', fontSize: '13px' }}>AIã«ããæçš¿æ¡ ({task.generatedCopy.platform}):</h4>
<ul style={{ margin: 0, paddingLeft: '20px', fontSize: '12px' }}>
{task.generatedCopy.drafts.map((draft, i) => <li key={i}>{draft}</li>)}
</ul>
<button
onClick={onEditCopy}
style={{
marginTop: '10px',
padding: '6px 12px',
fontSize: '0.8rem',
cursor: 'pointer',
border: '1px solid #0070f3',
borderRadius: '4px',
backgroundColor: 'white',
color: '#0070f3',
fontWeight: 'normal'
}}
>
ç·šéãã·ãã¥ã¬ãŒã
</button>
</div>
)}
</div>
);
const LaunchPlanBoard: FC<{ plan: LaunchPlan; onToggleComplete: (taskId: string) => void; onEditCopy: () => void }> = ({ plan, onToggleComplete, onEditCopy }) => (
<div>
<h1 data-proof="board-title" style={{ textAlign: 'center', fontSize: '3rem', color: '#1a202c', marginBottom: '10px', textShadow: '1px 1px 2px rgba(0,0,0,0.1)' }}>ð LaunchDeck: ããŒã³ãèšç»ããŒã</h1>
<h2 style={{ textAlign: 'center', color: '#4a5568', fontWeight: 'normal', fontSize: '1.5rem', marginBottom: '30px' }}>{sampleInput.title}</h2>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '20px' }}>
{STAGES.map(stage => (
<div key={stage} data-proof={`stage-${stage}`} style={{ backgroundColor: '#f0f4f8', borderRadius: '8px', padding: '15px', boxShadow: '0 4px 12px rgba(0,0,0,0.08)' }}>
<h3 style={{ borderBottom: '2px solid #334e68', paddingBottom: '10px', marginBottom: '15px', color: '#334e68', display: 'flex', alignItems: 'center' }}>
<span style={{ marginRight: '8px', fontSize: '1.2em' }}>{stage === 'äŒç»' ? 'ð¡' : stage === 'å¶äœ' ? 'ð ïž' : stage === '宣äŒ' ? 'ð£' : 'â
'}</span>
{stage}
</h3>
<div>
{plan.filter(task => task.stage === stage).map(task => (
<TaskCard key={task.id} task={task} onToggleComplete={onToggleComplete} onEditCopy={onEditCopy} />
))}
</div>
</div>
))}
</div>
</div>
);
// --- Main Page ---
export default function Home() {
const [traceIndex, setTraceIndex] = useState(-1);
const [showInput, setShowInput] = useState(true);
const [currentVisiblePlan, setCurrentVisiblePlan] = useState<LaunchPlan | null>(null);
const [interactivePlan, setInteractivePlan] = useState<LaunchPlan | null>(null);
useEffect(() => {
if (traceIndex > -1 && traceIndex < fullTrace.steps.length) {
setCurrentVisiblePlan(fullTrace.steps[traceIndex].output as LaunchPlan);
} else if (traceIndex === fullTrace.steps.length) {
// Trace completed, initialize interactive plan
setInteractivePlan(currentVisiblePlan);
}
}, [traceIndex, currentVisiblePlan]);
const handlePlay = () => {
setShowInput(false);
setTraceIndex(0);
let i = 0;
const interval = setInterval(() => {
i++;
if (i > fullTrace.steps.length) { // > to ensure interactivePlan is set after final step output
clearInterval(interval);
} else {
setTraceIndex(i);
}
}, 500); // 0.5 seconds per step
};
const handleToggleTaskComplete = (taskId: string) => {
if (interactivePlan) {
setInteractivePlan(prevPlan => {
if (!prevPlan) return null;
return prevPlan.map(task =>
task.id === taskId
? { ...task, status: task.status === 'å®äº' ? 'æªçæ' : 'å®äº' }
: task
);
});
}
};
const handleEditCopy = () => {
alert('AIçæææ¡ã®ç·šéæ©èœã¯ãå°æ¥ã®å®è£
ã§æäŸãããŸãã\nïŒãã®ãã¢ã§ã¯ã·ãã¥ã¬ãŒãã§ãïŒ');
};
const planToRender = interactivePlan || currentVisiblePlan;
return (
<main style={{ fontFamily: 'sans-serif', padding: '20px', backgroundColor: '#eef2f7', minHeight: '100vh' }}>
<div style={{ maxWidth: '1200px', margin: '0 auto' }}>
<header style={{ textAlign: 'center', marginBottom: '40px', background: 'linear-gradient(135deg, #0070f3 0%, #00bfff 100%)', padding: '20px', borderRadius: '12px', color: 'white', boxShadow: '0 6px 20px rgba(0,112,243,0.25)' }}>
<h1 style={{ fontSize: '3rem', margin: '0' }}>ð LaunchDeck</h1>
<p style={{ fontSize: '1.3rem', color: '#e0e7ff', margin: '10px 0 0' }}>ã¢ã€ãã¢ããå
¬éãŸã§ã®ããŒããããã«å€æãããã</p>
</header>
{showInput && (
<div style={{ backgroundColor: 'white', padding: '40px', borderRadius: '8px', textAlign: 'center', boxShadow: '0 2px 10px rgba(0,0,0,0.05)' }}>
<h2 style={{marginTop: 0, color: '#333'}}>ãããžã§ã¯ãã®æŠèŠãå
¥å</h2>
<div style={{ backgroundColor: '#f9f9f9', border: '1px solid #eee', padding: '15px', borderRadius: '4px', textAlign: 'left', margin: '20px 0', whiteSpace: 'pre-wrap', color: '#666' }}>
{sampleInput.description}
</div>
<button
onClick={handlePlay}
data-proof="play-trace"
style={{
padding: '12px 24px',
fontSize: '1.1rem',
cursor: 'pointer',
border: 'none',
borderRadius: '5px',
background: 'linear-gradient(45deg, #0070f3, #00bfff)',
color: 'white',
fontWeight: 'bold',
boxShadow: '0 4px 15px rgba(0,112,243,0.3)',
transition: 'transform 0.2s ease-in-out'
}}
onMouseOver={(e) => (e.currentTarget.style.transform = 'translateY(-2px)')}
onMouseOut={(e) => (e.currentTarget.style.transform = 'translateY(0)')}
>
ãµã³ãã«å®è¡ãã¬ãŒã¹ãåç
</button>
</div>
)}
{!showInput && planToRender && (
<div>
<LaunchPlanBoard
plan={planToRender}
onToggleComplete={handleToggleTaskComplete}
onEditCopy={handleEditCopy}
/>
</div>
)}
</div>
</main>
);
}
Run context. ããã§ã¯ç®¡ç倿ã«å¿ èŠãªRunã®èŠçŽã ãã衚瀺ããŸããpromptãinputãresponseãmetadataJsonã®å šæã¯é垞確èªããå€ãã å¿ èŠãªå Žåã ãRun詳现ãã°ã§ç¢ºèªããŸãã
- Run ID
- run_selfdirected_agent_j_20260708T002658
- èµ·åçš®å¥
- llm_pipeline
- èªåŸåºŠ
- L1_assisted
- å®è¡è
- system / LLM Pipeline Publisher
- éå§
- 2026/7/8 09:38:50 JST
- å®äº
- 2026/7/8 09:38:50 JST
- çæ / å ¬é / 倱æ
- 1 / 1 / 0
- 蚌跡件æ°
- 8 events / 28 artifacts / 40 checks
LLM pipeline run for selfdirected_agent_j_20260708T002658. Published 0 project(s).
