@tangle-network/starter-foundry 0.5.2 → 0.5.4
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.
- package/README.md +49 -0
- package/corpus/ideasai-prompts.json +119 -58
- package/dist/cli.js +28 -2
- package/dist/cli.js.map +1 -1
- package/dist/lib/agent-context.js +34 -22
- package/dist/lib/agent-context.js.map +1 -1
- package/dist/lib/build-plan.d.ts +18 -0
- package/dist/lib/build-plan.js +72 -0
- package/dist/lib/build-plan.js.map +1 -1
- package/dist/lib/buildout-traces.d.ts +113 -0
- package/dist/lib/buildout-traces.js +83 -0
- package/dist/lib/buildout-traces.js.map +1 -0
- package/dist/lib/capability-inferrer.d.ts +40 -0
- package/dist/lib/capability-inferrer.js +82 -0
- package/dist/lib/capability-inferrer.js.map +1 -0
- package/dist/lib/context-pack.d.ts +6 -1
- package/dist/lib/context-pack.js +9 -3
- package/dist/lib/context-pack.js.map +1 -1
- package/dist/lib/keywords.js +71 -18
- package/dist/lib/keywords.js.map +1 -1
- package/dist/lib/llm.d.ts +9 -0
- package/dist/lib/llm.js +70 -0
- package/dist/lib/llm.js.map +1 -0
- package/dist/lib/planner/contracts.d.ts +11 -0
- package/dist/lib/planner/contracts.js +119 -0
- package/dist/lib/planner/contracts.js.map +1 -0
- package/dist/lib/planner/detectors.d.ts +14 -0
- package/dist/lib/planner/detectors.js +195 -0
- package/dist/lib/planner/detectors.js.map +1 -0
- package/dist/lib/planner/helpers.d.ts +2 -0
- package/dist/lib/planner/helpers.js +135 -0
- package/dist/lib/planner/helpers.js.map +1 -0
- package/dist/lib/planner/implicit-caps.d.ts +1 -0
- package/dist/lib/planner/implicit-caps.js +91 -0
- package/dist/lib/planner/implicit-caps.js.map +1 -0
- package/dist/lib/planner/projects.d.ts +13 -0
- package/dist/lib/planner/projects.js +181 -0
- package/dist/lib/planner/projects.js.map +1 -0
- package/dist/lib/planner/signals.d.ts +17 -0
- package/dist/lib/planner/signals.js +324 -0
- package/dist/lib/planner/signals.js.map +1 -0
- package/dist/lib/product-brief.d.ts +25 -0
- package/dist/lib/product-brief.js +129 -0
- package/dist/lib/product-brief.js.map +1 -0
- package/dist/lib/prompt-planner.d.ts +5 -1
- package/dist/lib/prompt-planner.js +59 -622
- package/dist/lib/prompt-planner.js.map +1 -1
- package/dist/lib/prompt-rewriter.d.ts +21 -0
- package/dist/lib/prompt-rewriter.js +118 -0
- package/dist/lib/prompt-rewriter.js.map +1 -0
- package/dist/lib/selection.js +170 -36
- package/dist/lib/selection.js.map +1 -1
- package/dist/lib/telemetry.d.ts +0 -11
- package/dist/lib/telemetry.js +3 -3
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/vb-outcomes.d.ts +61 -0
- package/dist/lib/vb-outcomes.js +88 -0
- package/dist/lib/vb-outcomes.js.map +1 -0
- package/dist/training/variant_b/brief-loader.d.ts +5 -0
- package/dist/training/variant_b/brief-loader.js +263 -0
- package/dist/training/variant_b/brief-loader.js.map +1 -0
- package/dist/training/variant_b/flow.d.ts +56 -0
- package/dist/training/variant_b/flow.js +80 -0
- package/dist/training/variant_b/flow.js.map +1 -0
- package/dist/training/variant_b/generate.d.ts +7 -0
- package/dist/training/variant_b/generate.js +70 -0
- package/dist/training/variant_b/generate.js.map +1 -0
- package/dist/training/variant_b/judge.d.ts +8 -0
- package/dist/training/variant_b/judge.js +24 -0
- package/dist/training/variant_b/judge.js.map +1 -0
- package/dist/training/variant_b/nodes/collect.d.ts +31 -0
- package/dist/training/variant_b/nodes/collect.js +122 -0
- package/dist/training/variant_b/nodes/collect.js.map +1 -0
- package/dist/training/variant_b/nodes/generate.d.ts +22 -0
- package/dist/training/variant_b/nodes/generate.js +171 -0
- package/dist/training/variant_b/nodes/generate.js.map +1 -0
- package/dist/training/variant_b/nodes/judge.d.ts +26 -0
- package/dist/training/variant_b/nodes/judge.js +64 -0
- package/dist/training/variant_b/nodes/judge.js.map +1 -0
- package/dist/training/variant_b/nodes/promote.d.ts +15 -0
- package/dist/training/variant_b/nodes/promote.js +64 -0
- package/dist/training/variant_b/nodes/promote.js.map +1 -0
- package/dist/training/variant_b/nodes/rank.d.ts +12 -0
- package/dist/training/variant_b/nodes/rank.js +46 -0
- package/dist/training/variant_b/nodes/rank.js.map +1 -0
- package/dist/training/variant_b/nodes/train.d.ts +34 -0
- package/dist/training/variant_b/nodes/train.js +209 -0
- package/dist/training/variant_b/nodes/train.js.map +1 -0
- package/dist/training/variant_b/run-flow.d.ts +11 -0
- package/dist/training/variant_b/run-flow.js +21 -0
- package/dist/training/variant_b/run-flow.js.map +1 -0
- package/dist/training/variant_b/train.d.ts +15 -0
- package/dist/training/variant_b/train.js +37 -0
- package/dist/training/variant_b/train.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/package.json +6 -2
- package/registry/families/browser-extension-ts/files/package.json +4 -1
- package/registry/families/cli-ts/files/package.json +5 -0
- package/registry/families/electron-desktop-ts/files/package.json +3 -1
- package/registry/families/expo-react-native-ts/files/package.json +4 -0
- package/registry/families/fhenix-contracts/files/package.json +1 -1
- package/registry/families/fhevm-contracts/files/package.json +1 -1
- package/registry/families/fullstack-ts/files/package.json +3 -1
- package/registry/families/hardhat-contracts/files/package.json +3 -1
- package/registry/families/nextjs-ts/files/package.json +3 -1
- package/registry/families/react-vite-ts/files/package.json +11 -1
- package/registry/families/react-vite-ts/files/src/components/ui/badge.tsx +9 -0
- package/registry/families/react-vite-ts/files/src/components/ui/button.tsx +18 -0
- package/registry/families/react-vite-ts/files/src/components/ui/card.tsx +22 -0
- package/registry/families/react-vite-ts/manifest.json +14 -2
- package/registry/families/remix-ts/files/package.json +9 -1
- package/registry/families/sveltekit-ts/files/package.json +9 -1
- package/registry/families/tauri-desktop/files/package.json +3 -1
- package/registry/families/vue-ts/files/package.json +9 -1
- package/registry/layers/framework/expo-react-native-ts/files/tsconfig.json +2 -1
- package/registry/layers/framework/forge-foundation/files/foundry.toml +22 -1
- package/registry/layers/framework/fullstack-node-ts/files/personalize.json +5 -5
- package/registry/layers/framework/tangle-blueprint/files/TOOLCHAIN.md +16 -0
- package/registry/layers/framework/tangle-blueprint/files/rust-toolchain.toml +1 -1
- package/registry/layers/framework/tangle-blueprint/manifest.json +4 -0
- package/registry/package-to-capability.json +57 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Small helpers shared across the planner modules. Kept separate so builders
|
|
2
|
+
// can import them without pulling in prompt-planner's full routing pipeline.
|
|
3
|
+
import { sanitizePackageName } from '../fs.js';
|
|
4
|
+
export function buildSlug(prompt, fallback) {
|
|
5
|
+
const slug = sanitizePackageName(prompt).slice(0, 40);
|
|
6
|
+
return slug || fallback;
|
|
7
|
+
}
|
|
8
|
+
// Restrict a partner attachment to family sets where the partner has actual
|
|
9
|
+
// capability layers. Without this, a Tangle partner would propagate to a
|
|
10
|
+
// forge-contracts project (which has no Tangle-specific layers), inflating the
|
|
11
|
+
// archetype without adding value.
|
|
12
|
+
export function resolvePartnerForFamily(partner, family) {
|
|
13
|
+
if (!partner) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const familySets = {
|
|
17
|
+
coinbase: new Set([
|
|
18
|
+
'frontend-static',
|
|
19
|
+
'react-vite-ts',
|
|
20
|
+
'nextjs-ts',
|
|
21
|
+
'fullstack-ts',
|
|
22
|
+
'expo-react-native-ts',
|
|
23
|
+
'browser-extension-ts',
|
|
24
|
+
'electron-desktop-ts',
|
|
25
|
+
'tauri-desktop',
|
|
26
|
+
'api-service',
|
|
27
|
+
'cloudflare-worker-ts',
|
|
28
|
+
'python-api',
|
|
29
|
+
'rust-service',
|
|
30
|
+
'go-api',
|
|
31
|
+
'worker-job',
|
|
32
|
+
'go-worker',
|
|
33
|
+
'playwright-worker',
|
|
34
|
+
'evm-infra-ts',
|
|
35
|
+
'agent-service-ts',
|
|
36
|
+
'agent-service-py',
|
|
37
|
+
'forge-contracts',
|
|
38
|
+
'hardhat-contracts',
|
|
39
|
+
]),
|
|
40
|
+
tangle: new Set([
|
|
41
|
+
'frontend-static',
|
|
42
|
+
'react-vite-ts',
|
|
43
|
+
'nextjs-ts',
|
|
44
|
+
'fullstack-ts',
|
|
45
|
+
'api-service',
|
|
46
|
+
'python-api',
|
|
47
|
+
'rust-service',
|
|
48
|
+
'go-api',
|
|
49
|
+
'worker-job',
|
|
50
|
+
'go-worker',
|
|
51
|
+
'playwright-worker',
|
|
52
|
+
'evm-infra-ts',
|
|
53
|
+
'agent-service-ts',
|
|
54
|
+
'agent-service-py',
|
|
55
|
+
'agent-service-rust',
|
|
56
|
+
'tangle-blueprint',
|
|
57
|
+
]),
|
|
58
|
+
eigenlayer: new Set([
|
|
59
|
+
'frontend-static',
|
|
60
|
+
'react-vite-ts',
|
|
61
|
+
'nextjs-ts',
|
|
62
|
+
'fullstack-ts',
|
|
63
|
+
'api-service',
|
|
64
|
+
'python-api',
|
|
65
|
+
'rust-service',
|
|
66
|
+
'go-api',
|
|
67
|
+
'worker-job',
|
|
68
|
+
'go-worker',
|
|
69
|
+
'playwright-worker',
|
|
70
|
+
'evm-infra-ts',
|
|
71
|
+
'agent-service-ts',
|
|
72
|
+
'agent-service-py',
|
|
73
|
+
'agent-service-rust',
|
|
74
|
+
'eigenlayer-avs',
|
|
75
|
+
]),
|
|
76
|
+
arbitrum: new Set([
|
|
77
|
+
'frontend-static',
|
|
78
|
+
'react-vite-ts',
|
|
79
|
+
'nextjs-ts',
|
|
80
|
+
'fullstack-ts',
|
|
81
|
+
'api-service',
|
|
82
|
+
'python-api',
|
|
83
|
+
'rust-service',
|
|
84
|
+
'go-api',
|
|
85
|
+
'worker-job',
|
|
86
|
+
'go-worker',
|
|
87
|
+
'playwright-worker',
|
|
88
|
+
'evm-infra-ts',
|
|
89
|
+
'agent-service-ts',
|
|
90
|
+
'agent-service-py',
|
|
91
|
+
'agent-service-rust',
|
|
92
|
+
'forge-contracts',
|
|
93
|
+
'hardhat-contracts',
|
|
94
|
+
'stylus-contracts',
|
|
95
|
+
]),
|
|
96
|
+
xlayer: new Set([
|
|
97
|
+
'frontend-static',
|
|
98
|
+
'react-vite-ts',
|
|
99
|
+
'nextjs-ts',
|
|
100
|
+
'fullstack-ts',
|
|
101
|
+
'api-service',
|
|
102
|
+
'python-api',
|
|
103
|
+
'rust-service',
|
|
104
|
+
'go-api',
|
|
105
|
+
'worker-job',
|
|
106
|
+
'go-worker',
|
|
107
|
+
'playwright-worker',
|
|
108
|
+
'evm-infra-ts',
|
|
109
|
+
'agent-service-ts',
|
|
110
|
+
'agent-service-py',
|
|
111
|
+
'agent-service-rust',
|
|
112
|
+
'forge-contracts',
|
|
113
|
+
'hardhat-contracts',
|
|
114
|
+
]),
|
|
115
|
+
solana: new Set([
|
|
116
|
+
'frontend-static',
|
|
117
|
+
'react-vite-ts',
|
|
118
|
+
'nextjs-ts',
|
|
119
|
+
'fullstack-ts',
|
|
120
|
+
'api-service',
|
|
121
|
+
'python-api',
|
|
122
|
+
'rust-service',
|
|
123
|
+
'go-api',
|
|
124
|
+
'worker-job',
|
|
125
|
+
'go-worker',
|
|
126
|
+
'playwright-worker',
|
|
127
|
+
'agent-service-ts',
|
|
128
|
+
'agent-service-py',
|
|
129
|
+
'agent-service-rust',
|
|
130
|
+
'solana-program',
|
|
131
|
+
]),
|
|
132
|
+
};
|
|
133
|
+
return familySets[partner]?.has(family) ? partner : null;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/planner/helpers.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,QAAgB;IACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACrD,OAAO,IAAI,IAAI,QAAQ,CAAA;AACzB,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,+EAA+E;AAC/E,kCAAkC;AAClC,MAAM,UAAU,uBAAuB,CAAC,OAAsB,EAAE,MAAc;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAgC;QAC9C,QAAQ,EAAE,IAAI,GAAG,CAAC;YAChB,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,sBAAsB;YACtB,sBAAsB;YACtB,qBAAqB;YACrB,eAAe;YACf,aAAa;YACb,sBAAsB;YACtB,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,mBAAmB;SACpB,CAAC;QACF,MAAM,EAAE,IAAI,GAAG,CAAC;YACd,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,kBAAkB;SACnB,CAAC;QACF,UAAU,EAAE,IAAI,GAAG,CAAC;YAClB,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,gBAAgB;SACjB,CAAC;QACF,QAAQ,EAAE,IAAI,GAAG,CAAC;YAChB,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;SACnB,CAAC;QACF,MAAM,EAAE,IAAI,GAAG,CAAC;YACd,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;SACpB,CAAC;QACF,MAAM,EAAE,IAAI,GAAG,CAAC;YACd,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,gBAAgB;SACjB,CAAC;KACH,CAAA;IAED,OAAO,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function inferImplicitCapabilities(text: string, family: string, existing: Set<string>): string[];
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Archetype-based capability inference. Runs AFTER the explicit keyword-driven
|
|
2
|
+
// detectCapabilities and AFTER framework-level defaults (tailwind/shadcn) are
|
|
3
|
+
// attached. Attaches implicit UI capabilities based on the product archetype
|
|
4
|
+
// inferred from the prompt shape — NOT from literal capability keywords.
|
|
5
|
+
//
|
|
6
|
+
// Rules (web-producing families only — starter and workspace-web alike):
|
|
7
|
+
//
|
|
8
|
+
// 1. SaaS UI base: for any frontend product that is not a chat-only surface,
|
|
9
|
+
// attach `capability:layout-dashboard`. AI SaaS prompts ("build me an AI X
|
|
10
|
+
// tool"), data/analytics prompts, and admin/operations products all need a
|
|
11
|
+
// dashboard shell — the #1 missed layer on ideasai (51x).
|
|
12
|
+
//
|
|
13
|
+
// 2. Chat archetype: when the product is a conversational surface (chatbot,
|
|
14
|
+
// AI assistant/tutor/companion, symptom checker, homework helper), attach
|
|
15
|
+
// `capability:layout-chat` and SKIP `layout-dashboard` (jaccard penalises
|
|
16
|
+
// extra layers).
|
|
17
|
+
//
|
|
18
|
+
// 3. `capability:ai-chat-ui`: attach whenever the prompt describes an AI-
|
|
19
|
+
// powered product (literal "AI <product>") on a web family. AI SaaS almost
|
|
20
|
+
// always ships a chat surface somewhere — missed 24x on ideasai.
|
|
21
|
+
//
|
|
22
|
+
// 4. `capability:chart-widget`: attach when data-viz signals are present
|
|
23
|
+
// (analytics, tracking, trends, portfolio, performance, reporting, etc.)
|
|
24
|
+
// — chart-widget has no manifest keywords, so it was never detected.
|
|
25
|
+
// Missed 16x on ideasai.
|
|
26
|
+
//
|
|
27
|
+
// Pure string→string[] mapping with zero I/O, deterministic, adds at most 4
|
|
28
|
+
// layer strings. No family/kind routing changes.
|
|
29
|
+
import { hasAny } from '../keywords.js';
|
|
30
|
+
import { ADMIN_ARCHETYPE_SIGNALS, AI_PRODUCT_PHRASES, AUTH_ARCHETYPE_SIGNALS, CHART_STRONG_SIGNALS, CHAT_ARCHETYPE_SIGNALS, IMPLICIT_UI_FAMILIES, VIDEO_ARCHETYPE_SIGNALS, } from './signals.js';
|
|
31
|
+
function isAiProductPrompt(text) {
|
|
32
|
+
return hasAny(text, AI_PRODUCT_PHRASES);
|
|
33
|
+
}
|
|
34
|
+
// Chatbot-style product — prompt describes a bot/assistant product even when
|
|
35
|
+
// the word "AI" doesn't appear (e.g. "customer support chatbot for Shopify").
|
|
36
|
+
function isChatbotStyleProduct(text) {
|
|
37
|
+
return hasAny(text, ['chatbot', 'chat bot', 'slack bot', 'discord bot', 'support bot', 'voice bot', 'phone agent']);
|
|
38
|
+
}
|
|
39
|
+
export function inferImplicitCapabilities(text, family, existing) {
|
|
40
|
+
if (!IMPLICIT_UI_FAMILIES.has(family))
|
|
41
|
+
return [];
|
|
42
|
+
const out = [];
|
|
43
|
+
const has = (layer) => existing.has(layer) || out.includes(layer);
|
|
44
|
+
const isChat = hasAny(text, CHAT_ARCHETYPE_SIGNALS);
|
|
45
|
+
const isAi = isAiProductPrompt(text);
|
|
46
|
+
const isChatbot = isChatbotStyleProduct(text);
|
|
47
|
+
const hasChartSignal = hasAny(text, CHART_STRONG_SIGNALS);
|
|
48
|
+
const isVideo = hasAny(text, VIDEO_ARCHETYPE_SIGNALS);
|
|
49
|
+
const chatAlreadyAttached = has('capability:layout-chat');
|
|
50
|
+
// Video/webrtc products take precedence over chat archetype — "video rooms
|
|
51
|
+
// with a quick chat" is a video product, not a chat product.
|
|
52
|
+
if (isVideo && !has('capability:webrtc')) {
|
|
53
|
+
out.push('capability:webrtc');
|
|
54
|
+
}
|
|
55
|
+
// Chat archetype is only "real" when there's no video surface. Video products
|
|
56
|
+
// that casually mention "chat" (co-working, video+chat apps) should stay on
|
|
57
|
+
// the dashboard layout.
|
|
58
|
+
const chatArchetype = !isVideo && (isChat || isChatbot || chatAlreadyAttached);
|
|
59
|
+
// AI-powered product OR explicit chatbot-shape product → ai-chat-ui.
|
|
60
|
+
// On web families these products virtually always ship a chat surface even
|
|
61
|
+
// when the user didn't spell out "chat interface".
|
|
62
|
+
if ((isAi || isChatbot) && !has('capability:ai-chat-ui')) {
|
|
63
|
+
out.push('capability:ai-chat-ui');
|
|
64
|
+
}
|
|
65
|
+
// Chat archetype → layout-chat (skip if explicit detection already added it).
|
|
66
|
+
if (!isVideo && (isChat || isChatbot) && !chatAlreadyAttached) {
|
|
67
|
+
out.push('capability:layout-chat');
|
|
68
|
+
}
|
|
69
|
+
// Default SaaS layout is the sidebar dashboard. Skip when the product is a
|
|
70
|
+
// chat surface OR when the prompt explicitly wants a landing page only.
|
|
71
|
+
const isLandingOnly = hasAny(text, ['landing page', 'marketing page', 'blog']) &&
|
|
72
|
+
!hasAny(text, ['dashboard', 'admin', 'app', 'saas', 'portal', 'panel']);
|
|
73
|
+
const shouldDashboard = !chatArchetype && !isLandingOnly && !has('capability:layout-dashboard');
|
|
74
|
+
if (shouldDashboard) {
|
|
75
|
+
out.push('capability:layout-dashboard');
|
|
76
|
+
}
|
|
77
|
+
// Chart widget fires on STRONG data-viz signals only. Skipped on chat
|
|
78
|
+
// products (corpus never expects chart on chat) to keep jaccard tight.
|
|
79
|
+
if (hasChartSignal && !chatArchetype && !has('capability:chart-widget')) {
|
|
80
|
+
out.push('capability:chart-widget');
|
|
81
|
+
}
|
|
82
|
+
// Admin/portal archetypes layer on top of layout-dashboard.
|
|
83
|
+
if (hasAny(text, ADMIN_ARCHETYPE_SIGNALS) && !has('capability:layout-admin')) {
|
|
84
|
+
out.push('capability:layout-admin');
|
|
85
|
+
}
|
|
86
|
+
if (hasAny(text, AUTH_ARCHETYPE_SIGNALS) && !has('capability:layout-auth')) {
|
|
87
|
+
out.push('capability:layout-auth');
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=implicit-caps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implicit-caps.js","sourceRoot":"","sources":["../../../src/lib/planner/implicit-caps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Registry } from '../../types.js';
|
|
2
|
+
import type { ProjectEntry } from '../../types.js';
|
|
3
|
+
export interface FamilyChoice {
|
|
4
|
+
family: string;
|
|
5
|
+
layers: string[];
|
|
6
|
+
path: string;
|
|
7
|
+
variables?: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildWebProject(prompt: string, partner: string | null, text: string, registry?: Registry): ProjectEntry;
|
|
10
|
+
export declare function chooseWorkerFamily(text: string): FamilyChoice;
|
|
11
|
+
export declare function chooseApiFamily(text: string): FamilyChoice;
|
|
12
|
+
export declare function buildApiProject(prompt: string, partner: string | null, text: string, registry?: Registry): ProjectEntry;
|
|
13
|
+
export declare function buildWorkerProject(prompt: string, partner: string | null, text: string): ProjectEntry;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Per-lane project builders. Each build*Project function takes a prompt and
|
|
2
|
+
// partner, picks the right family + layers + slots, and returns a ProjectEntry
|
|
3
|
+
// ready to slot into a workspace spec.
|
|
4
|
+
//
|
|
5
|
+
// Family choice is driven by chooseApiFamily / chooseWorkerFamily (which also
|
|
6
|
+
// lives here since the choice is a project-builder concern). Contract-lane
|
|
7
|
+
// builders live in ./contracts.ts alongside the agent-family selection.
|
|
8
|
+
import { detectCapabilities, detectLane, hasAny } from '../keywords.js';
|
|
9
|
+
import { detectAuthSlot, detectDatabaseSlot, detectEvmSupportApiPattern, detectPaymentsSlot, detectQueueSlot, detectSdkSlot, } from './detectors.js';
|
|
10
|
+
import { chooseAgentFamily } from './contracts.js';
|
|
11
|
+
import { buildSlug, resolvePartnerForFamily } from './helpers.js';
|
|
12
|
+
import { inferImplicitCapabilities } from './implicit-caps.js';
|
|
13
|
+
export function buildWebProject(prompt, partner, text, registry) {
|
|
14
|
+
const isNext = hasAny(text, ['next', 'next.js', 'nextjs', 'app router', 'seo']);
|
|
15
|
+
const family = isNext ? 'nextjs-ts' : 'react-vite-ts';
|
|
16
|
+
const frameworkLayer = isNext ? 'framework:nextjs-app-router' : 'framework:react-vite-ts';
|
|
17
|
+
const layers = [frameworkLayer];
|
|
18
|
+
if (hasAny(text, ['dashboard', 'metrics', 'analytics', 'control plane', 'admin'])) {
|
|
19
|
+
layers.push('capability:chart-widget');
|
|
20
|
+
}
|
|
21
|
+
const slots = {};
|
|
22
|
+
const sdkSlot = detectSdkSlot(text, partner);
|
|
23
|
+
const authSlot = detectAuthSlot(text);
|
|
24
|
+
const paymentsSlot = detectPaymentsSlot(text);
|
|
25
|
+
if (authSlot)
|
|
26
|
+
slots['auth'] = authSlot;
|
|
27
|
+
if (paymentsSlot)
|
|
28
|
+
slots['payments'] = paymentsSlot;
|
|
29
|
+
if (sdkSlot)
|
|
30
|
+
slots['sdk'] = sdkSlot;
|
|
31
|
+
const webCapabilities = registry ? detectCapabilities(text, family, registry) : [];
|
|
32
|
+
if (webCapabilities.length > 0)
|
|
33
|
+
layers.push(...webCapabilities);
|
|
34
|
+
const implicit = inferImplicitCapabilities(text, family, new Set(layers));
|
|
35
|
+
if (implicit.length > 0)
|
|
36
|
+
layers.push(...implicit);
|
|
37
|
+
// Force-attach tailwind + shadcn on every React family web project, same as
|
|
38
|
+
// the starter path does. Without this, workspace scaffolds (UI + contracts)
|
|
39
|
+
// lose the UI capability attachments agents then install manually —
|
|
40
|
+
// visible in .evolve/capability-gaps.json as shadcn missed 20× / tailwind 14×.
|
|
41
|
+
if (!layers.includes('capability:tailwind'))
|
|
42
|
+
layers.push('capability:tailwind');
|
|
43
|
+
if (!layers.includes('capability:shadcn'))
|
|
44
|
+
layers.push('capability:shadcn');
|
|
45
|
+
return {
|
|
46
|
+
id: 'web',
|
|
47
|
+
path: 'apps/web',
|
|
48
|
+
spec: {
|
|
49
|
+
projectName: `${buildSlug(prompt, 'workspace')}-web`,
|
|
50
|
+
family,
|
|
51
|
+
layers: [...new Set(layers)],
|
|
52
|
+
partner: resolvePartnerForFamily(partner, family),
|
|
53
|
+
slots,
|
|
54
|
+
variables: {
|
|
55
|
+
headline: 'Ship the primary product surface first',
|
|
56
|
+
subheadline: 'This workspace starts with the user-visible surface before deepening the backend and contract lanes.',
|
|
57
|
+
},
|
|
58
|
+
primaryArtifactTargetMs: 2500,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function chooseWorkerFamily(text) {
|
|
63
|
+
if (hasAny(text, ['playwright', 'browser automation', 'web scraping', 'scraper', 'crawler'])) {
|
|
64
|
+
return { family: 'playwright-worker', layers: ['framework:playwright-worker'], path: 'apps/worker' };
|
|
65
|
+
}
|
|
66
|
+
if (hasAny(text, ['go worker', 'golang worker', 'go cron', 'go queue', 'go background job'])) {
|
|
67
|
+
return { family: 'go-worker', layers: ['framework:go-worker'], path: 'apps/worker' };
|
|
68
|
+
}
|
|
69
|
+
if (hasAny(text, ['python worker', 'python cron', 'python queue', 'python background job', 'celery', 'python task'])) {
|
|
70
|
+
return { family: 'python-worker', layers: ['framework:python-worker'], path: 'apps/worker' };
|
|
71
|
+
}
|
|
72
|
+
if (detectLane(text, 'agent') && hasAny(text, ['worker', 'background', 'cron', 'queue', 'runner', 'executor'])) {
|
|
73
|
+
return { family: 'worker-job', layers: ['framework:node-worker'], path: 'apps/worker' };
|
|
74
|
+
}
|
|
75
|
+
const layers = ['framework:node-worker'];
|
|
76
|
+
if (hasAny(text, ['trading', 'market', 'feed', 'stream'])) {
|
|
77
|
+
layers.push('capability:market-sim');
|
|
78
|
+
}
|
|
79
|
+
return { family: 'worker-job', layers, path: 'apps/worker' };
|
|
80
|
+
}
|
|
81
|
+
export function chooseApiFamily(text) {
|
|
82
|
+
if (detectLane(text, 'x402'))
|
|
83
|
+
return { family: 'x402-service', layers: ['framework:x402-service'], path: 'apps/api' };
|
|
84
|
+
if (detectLane(text, 'mcp'))
|
|
85
|
+
return { family: 'mcp-server-ts', layers: ['framework:mcp-server-ts'], path: 'apps/mcp' };
|
|
86
|
+
if (detectLane(text, 'dspy'))
|
|
87
|
+
return { family: 'dspy-pipeline-py', layers: ['framework:dspy-pipeline-py'], path: 'apps/ai' };
|
|
88
|
+
if (detectLane(text, 'agent'))
|
|
89
|
+
return chooseAgentFamily(text);
|
|
90
|
+
if (detectLane(text, 'zk'))
|
|
91
|
+
return { family: 'zk-prover-service', layers: ['framework:zk-prover-service'], path: 'apps/prover' };
|
|
92
|
+
if (detectLane(text, 'evm-infra'))
|
|
93
|
+
return { family: 'evm-infra-ts', layers: ['framework:evm-infra-ts'], path: 'apps/api' };
|
|
94
|
+
if (hasAny(text, ['cloudflare', 'durable object', 'edge api', 'edge function', 'hono edge'])) {
|
|
95
|
+
return { family: 'cloudflare-worker-ts', layers: ['framework:cloudflare-worker-ts'], path: 'apps/edge' };
|
|
96
|
+
}
|
|
97
|
+
if (hasAny(text, ['rust', 'cargo', 'axum', 'rust api', 'rust backend'])) {
|
|
98
|
+
return { family: 'rust-service', layers: ['framework:rust-http'], path: 'apps/api' };
|
|
99
|
+
}
|
|
100
|
+
if (hasAny(text, ['python', 'fastapi', 'flask', 'django', 'python api'])) {
|
|
101
|
+
return { family: 'python-api', layers: ['framework:python-http'], path: 'apps/api' };
|
|
102
|
+
}
|
|
103
|
+
if (hasAny(text, ['golang', 'go api', 'go backend', 'go service', 'net/http'])) {
|
|
104
|
+
return { family: 'go-api', layers: ['framework:go-net-http'], path: 'apps/api' };
|
|
105
|
+
}
|
|
106
|
+
return { family: 'api-service', layers: ['framework:node-http', 'capability:logging'], path: 'apps/api' };
|
|
107
|
+
}
|
|
108
|
+
export function buildApiProject(prompt, partner, text, registry) {
|
|
109
|
+
const choice = chooseApiFamily(text);
|
|
110
|
+
const layers = [...choice.layers];
|
|
111
|
+
const slots = {};
|
|
112
|
+
const databaseSlot = detectDatabaseSlot(text);
|
|
113
|
+
const sdkSlot = detectSdkSlot(text, partner);
|
|
114
|
+
const authSlot = detectAuthSlot(text);
|
|
115
|
+
const paymentsSlot = detectPaymentsSlot(text);
|
|
116
|
+
const queueSlot = detectQueueSlot(text);
|
|
117
|
+
if (databaseSlot)
|
|
118
|
+
slots['database'] = databaseSlot;
|
|
119
|
+
if (authSlot)
|
|
120
|
+
slots['auth'] = authSlot;
|
|
121
|
+
if (paymentsSlot)
|
|
122
|
+
slots['payments'] = paymentsSlot;
|
|
123
|
+
if (queueSlot)
|
|
124
|
+
slots['queue'] = queueSlot;
|
|
125
|
+
if (sdkSlot)
|
|
126
|
+
slots['sdk'] = sdkSlot;
|
|
127
|
+
if ((choice.family === 'api-service' || choice.family === 'evm-infra-ts') && detectEvmSupportApiPattern(text)) {
|
|
128
|
+
layers.push('capability:evm-protocol-api');
|
|
129
|
+
}
|
|
130
|
+
if (choice.family === 'evm-infra-ts') {
|
|
131
|
+
if (hasAny(text, ['block monitor', 'new blocks', 'gas price', 'tps', '/stats'])) {
|
|
132
|
+
layers.push('capability:evm-chain-monitor');
|
|
133
|
+
}
|
|
134
|
+
else if (hasAny(text, ['wallet balance', 'wallet address', 'multicall', 'summary table'])) {
|
|
135
|
+
layers.push('capability:evm-wallet-dashboard');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const apiCapabilities = registry ? detectCapabilities(text, choice.family, registry) : [];
|
|
139
|
+
if (apiCapabilities.length > 0)
|
|
140
|
+
layers.push(...apiCapabilities);
|
|
141
|
+
return {
|
|
142
|
+
id: choice.family.startsWith('agent-service-') ? 'agent' : 'api',
|
|
143
|
+
path: choice.path,
|
|
144
|
+
spec: {
|
|
145
|
+
projectName: `${buildSlug(prompt, 'workspace')}-api`,
|
|
146
|
+
family: choice.family,
|
|
147
|
+
layers: [...new Set(layers)],
|
|
148
|
+
partner: resolvePartnerForFamily(partner, choice.family),
|
|
149
|
+
slots,
|
|
150
|
+
variables: choice.variables ?? {},
|
|
151
|
+
primaryArtifactTargetMs: 2500,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export function buildWorkerProject(prompt, partner, text) {
|
|
156
|
+
const choice = chooseWorkerFamily(text);
|
|
157
|
+
const layers = [...choice.layers];
|
|
158
|
+
const slots = {};
|
|
159
|
+
const queueSlot = detectQueueSlot(text);
|
|
160
|
+
if (queueSlot)
|
|
161
|
+
slots['queue'] = queueSlot;
|
|
162
|
+
if (choice.family === 'worker-job' && hasAny(text, ['solana', 'anchor', 'pyth', 'switchboard', 'keeper', 'liquidation'])) {
|
|
163
|
+
layers.push('capability:solana-keeper');
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
id: 'worker',
|
|
167
|
+
path: choice.path,
|
|
168
|
+
spec: {
|
|
169
|
+
projectName: `${buildSlug(prompt, 'workspace')}-worker`,
|
|
170
|
+
family: choice.family,
|
|
171
|
+
layers,
|
|
172
|
+
partner: resolvePartnerForFamily(partner, choice.family),
|
|
173
|
+
slots,
|
|
174
|
+
variables: {
|
|
175
|
+
workerName: partner ? `${partner} worker lane` : 'workspace worker lane',
|
|
176
|
+
},
|
|
177
|
+
primaryArtifactTargetMs: 2500,
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/lib/planner/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const IMPLICIT_UI_FAMILIES: Set<string>;
|
|
2
|
+
export declare const REACT_FAMILIES: Set<string>;
|
|
3
|
+
export declare const CHAT_ARCHETYPE_SIGNALS: string[];
|
|
4
|
+
export declare const CHART_STRONG_SIGNALS: string[];
|
|
5
|
+
export declare const AI_PRODUCT_PHRASES: string[];
|
|
6
|
+
export declare const VIDEO_ARCHETYPE_SIGNALS: string[];
|
|
7
|
+
export declare const ADMIN_ARCHETYPE_SIGNALS: string[];
|
|
8
|
+
export declare const AUTH_ARCHETYPE_SIGNALS: string[];
|
|
9
|
+
export declare const SINGLE_LANE_SIGNALS: string[];
|
|
10
|
+
export declare const FRONTEND_SIGNALS: string[];
|
|
11
|
+
export declare const API_SIGNALS: string[];
|
|
12
|
+
export declare const FRAMEWORK_API_TERMS: string[];
|
|
13
|
+
export declare const STRONG_API_TERMS: string[];
|
|
14
|
+
export declare const WORKER_SIGNALS: string[];
|
|
15
|
+
export declare const EXPLICIT_WORKER_SIGNALS: string[];
|
|
16
|
+
export declare const FULLSTACK_SIGNALS: string[];
|
|
17
|
+
export declare const WORKSPACE_SIGNALS: string[];
|