@tangle-network/starter-foundry 0.5.3 → 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.
Files changed (121) hide show
  1. package/README.md +49 -0
  2. package/corpus/ideasai-prompts.json +119 -58
  3. package/dist/cli.js +28 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/lib/agent-context.js +34 -22
  6. package/dist/lib/agent-context.js.map +1 -1
  7. package/dist/lib/build-plan.d.ts +18 -0
  8. package/dist/lib/build-plan.js +72 -0
  9. package/dist/lib/build-plan.js.map +1 -1
  10. package/dist/lib/buildout-traces.d.ts +113 -0
  11. package/dist/lib/buildout-traces.js +83 -0
  12. package/dist/lib/buildout-traces.js.map +1 -0
  13. package/dist/lib/capability-inferrer.d.ts +40 -0
  14. package/dist/lib/capability-inferrer.js +82 -0
  15. package/dist/lib/capability-inferrer.js.map +1 -0
  16. package/dist/lib/context-pack.d.ts +6 -1
  17. package/dist/lib/context-pack.js +9 -3
  18. package/dist/lib/context-pack.js.map +1 -1
  19. package/dist/lib/keywords.js +71 -18
  20. package/dist/lib/keywords.js.map +1 -1
  21. package/dist/lib/llm.d.ts +9 -0
  22. package/dist/lib/llm.js +70 -0
  23. package/dist/lib/llm.js.map +1 -0
  24. package/dist/lib/planner/contracts.d.ts +11 -0
  25. package/dist/lib/planner/contracts.js +119 -0
  26. package/dist/lib/planner/contracts.js.map +1 -0
  27. package/dist/lib/planner/detectors.d.ts +14 -0
  28. package/dist/lib/planner/detectors.js +195 -0
  29. package/dist/lib/planner/detectors.js.map +1 -0
  30. package/dist/lib/planner/helpers.d.ts +2 -0
  31. package/dist/lib/planner/helpers.js +135 -0
  32. package/dist/lib/planner/helpers.js.map +1 -0
  33. package/dist/lib/planner/implicit-caps.d.ts +1 -0
  34. package/dist/lib/planner/implicit-caps.js +91 -0
  35. package/dist/lib/planner/implicit-caps.js.map +1 -0
  36. package/dist/lib/planner/projects.d.ts +13 -0
  37. package/dist/lib/planner/projects.js +181 -0
  38. package/dist/lib/planner/projects.js.map +1 -0
  39. package/dist/lib/planner/signals.d.ts +17 -0
  40. package/dist/lib/planner/signals.js +324 -0
  41. package/dist/lib/planner/signals.js.map +1 -0
  42. package/dist/lib/product-brief.d.ts +25 -0
  43. package/dist/lib/product-brief.js +129 -0
  44. package/dist/lib/product-brief.js.map +1 -0
  45. package/dist/lib/prompt-planner.d.ts +5 -1
  46. package/dist/lib/prompt-planner.js +59 -622
  47. package/dist/lib/prompt-planner.js.map +1 -1
  48. package/dist/lib/prompt-rewriter.d.ts +21 -0
  49. package/dist/lib/prompt-rewriter.js +118 -0
  50. package/dist/lib/prompt-rewriter.js.map +1 -0
  51. package/dist/lib/selection.js +170 -36
  52. package/dist/lib/selection.js.map +1 -1
  53. package/dist/lib/telemetry.d.ts +0 -11
  54. package/dist/lib/telemetry.js +3 -3
  55. package/dist/lib/telemetry.js.map +1 -1
  56. package/dist/lib/vb-outcomes.d.ts +61 -0
  57. package/dist/lib/vb-outcomes.js +88 -0
  58. package/dist/lib/vb-outcomes.js.map +1 -0
  59. package/dist/training/variant_b/brief-loader.d.ts +5 -0
  60. package/dist/training/variant_b/brief-loader.js +263 -0
  61. package/dist/training/variant_b/brief-loader.js.map +1 -0
  62. package/dist/training/variant_b/flow.d.ts +56 -0
  63. package/dist/training/variant_b/flow.js +80 -0
  64. package/dist/training/variant_b/flow.js.map +1 -0
  65. package/dist/training/variant_b/generate.d.ts +7 -0
  66. package/dist/training/variant_b/generate.js +70 -0
  67. package/dist/training/variant_b/generate.js.map +1 -0
  68. package/dist/training/variant_b/judge.d.ts +8 -0
  69. package/dist/training/variant_b/judge.js +24 -0
  70. package/dist/training/variant_b/judge.js.map +1 -0
  71. package/dist/training/variant_b/nodes/collect.d.ts +31 -0
  72. package/dist/training/variant_b/nodes/collect.js +122 -0
  73. package/dist/training/variant_b/nodes/collect.js.map +1 -0
  74. package/dist/training/variant_b/nodes/generate.d.ts +22 -0
  75. package/dist/training/variant_b/nodes/generate.js +171 -0
  76. package/dist/training/variant_b/nodes/generate.js.map +1 -0
  77. package/dist/training/variant_b/nodes/judge.d.ts +26 -0
  78. package/dist/training/variant_b/nodes/judge.js +64 -0
  79. package/dist/training/variant_b/nodes/judge.js.map +1 -0
  80. package/dist/training/variant_b/nodes/promote.d.ts +15 -0
  81. package/dist/training/variant_b/nodes/promote.js +64 -0
  82. package/dist/training/variant_b/nodes/promote.js.map +1 -0
  83. package/dist/training/variant_b/nodes/rank.d.ts +12 -0
  84. package/dist/training/variant_b/nodes/rank.js +46 -0
  85. package/dist/training/variant_b/nodes/rank.js.map +1 -0
  86. package/dist/training/variant_b/nodes/train.d.ts +34 -0
  87. package/dist/training/variant_b/nodes/train.js +209 -0
  88. package/dist/training/variant_b/nodes/train.js.map +1 -0
  89. package/dist/training/variant_b/run-flow.d.ts +11 -0
  90. package/dist/training/variant_b/run-flow.js +21 -0
  91. package/dist/training/variant_b/run-flow.js.map +1 -0
  92. package/dist/training/variant_b/train.d.ts +15 -0
  93. package/dist/training/variant_b/train.js +37 -0
  94. package/dist/training/variant_b/train.js.map +1 -0
  95. package/dist/types.d.ts +16 -0
  96. package/package.json +6 -2
  97. package/registry/families/browser-extension-ts/files/package.json +4 -1
  98. package/registry/families/cli-ts/files/package.json +5 -0
  99. package/registry/families/electron-desktop-ts/files/package.json +3 -1
  100. package/registry/families/expo-react-native-ts/files/package.json +4 -0
  101. package/registry/families/fhenix-contracts/files/package.json +1 -1
  102. package/registry/families/fhevm-contracts/files/package.json +1 -1
  103. package/registry/families/fullstack-ts/files/package.json +3 -1
  104. package/registry/families/hardhat-contracts/files/package.json +3 -1
  105. package/registry/families/nextjs-ts/files/package.json +3 -1
  106. package/registry/families/react-vite-ts/files/package.json +11 -1
  107. package/registry/families/react-vite-ts/files/src/components/ui/badge.tsx +9 -0
  108. package/registry/families/react-vite-ts/files/src/components/ui/button.tsx +18 -0
  109. package/registry/families/react-vite-ts/files/src/components/ui/card.tsx +22 -0
  110. package/registry/families/react-vite-ts/manifest.json +14 -2
  111. package/registry/families/remix-ts/files/package.json +9 -1
  112. package/registry/families/sveltekit-ts/files/package.json +9 -1
  113. package/registry/families/tauri-desktop/files/package.json +3 -1
  114. package/registry/families/vue-ts/files/package.json +9 -1
  115. package/registry/layers/framework/expo-react-native-ts/files/tsconfig.json +2 -1
  116. package/registry/layers/framework/forge-foundation/files/foundry.toml +22 -1
  117. package/registry/layers/framework/fullstack-node-ts/files/personalize.json +5 -5
  118. package/registry/layers/framework/tangle-blueprint/files/TOOLCHAIN.md +16 -0
  119. package/registry/layers/framework/tangle-blueprint/files/rust-toolchain.toml +1 -1
  120. package/registry/layers/framework/tangle-blueprint/manifest.json +4 -0
  121. package/registry/package-to-capability.json +57 -0
@@ -1,9 +1,9 @@
1
1
  import path from 'node:path';
2
- import { generateBuildPlan } from './build-plan.js';
2
+ import { enhanceBuildPlanWithLLM, generateBuildPlan, mergeBriefIntoBuildPlan } from './build-plan.js';
3
3
  import { composeStarter } from './compose.js';
4
4
  import { createTempDir, listFilesRecursive, readJson, removeDir, writeJson } from './fs.js';
5
5
  import { resolveComponents } from './registry.js';
6
- export async function createContextPack({ spec, outDir = null, }) {
6
+ export async function createContextPack({ spec, outDir = null, llmBuildPlan = false, brief = null, }) {
7
7
  const composedDir = outDir ?? (await createTempDir('starter-foundry-context'));
8
8
  const cleanup = !outDir;
9
9
  const composeResult = await composeStarter({ spec, outDir: composedDir });
@@ -11,7 +11,13 @@ export async function createContextPack({ spec, outDir = null, }) {
11
11
  const composeReport = await readJson(composeResult.composeReportPath);
12
12
  const files = await listFilesRecursive(composedDir);
13
13
  const components = await resolveComponents(spec);
14
- const buildPlan = generateBuildPlan(spec, components);
14
+ let buildPlan = generateBuildPlan(spec, components);
15
+ if (brief) {
16
+ buildPlan = mergeBriefIntoBuildPlan(buildPlan, brief);
17
+ }
18
+ else if (llmBuildPlan) {
19
+ buildPlan = await enhanceBuildPlanWithLLM({ spec, base: buildPlan, composedFiles: files });
20
+ }
15
21
  const contextPack = {
16
22
  schemaVersion: 1,
17
23
  generatedAt: new Date().toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"context-pack.js","sourceRoot":"","sources":["../../src/lib/context-pack.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AASjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,IAAI,EACJ,MAAM,GAAG,IAAI,GAId;IACC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC9E,MAAM,OAAO,GAAG,CAAC,MAAM,CAAA;IACvB,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IAEzE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAgB,aAAa,CAAC,iBAAiB,CAAC,CAAA;QACpF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAErD,MAAM,WAAW,GAAgB;YAC/B,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,KAAK;YACL,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,QAAQ;YAC7C,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW;YACnD,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI;YACnD,eAAe,EAAE,aAAa,CAAC,YAAY,CAAC,eAAe;YAC3D,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;YAChD,UAAU,EAAE;gBACV,OAAO,EAAE,SAAS,CAAC,IAAI;gBACvB,UAAU,EAAE,SAAS,CAAC,UAAU;aACjC;YACD,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;SACpC,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;QACnF,MAAM,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAEzC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,WAAW;YACX,WAAW;SACZ,CAAA;IACH,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,SAAS,CAAC,WAAW,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"context-pack.js","sourceRoot":"","sources":["../../src/lib/context-pack.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAUjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,IAAI,EACJ,MAAM,GAAG,IAAI,EACb,YAAY,GAAG,KAAK,EACpB,KAAK,GAAG,IAAI,GAQb;IACC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC9E,MAAM,OAAO,GAAG,CAAC,MAAM,CAAA;IACvB,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IAEzE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAgB,aAAa,CAAC,iBAAiB,CAAC,CAAA;QACpF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,GAAG,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,SAAS,GAAG,MAAM,uBAAuB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5F,CAAC;QAED,MAAM,WAAW,GAAgB;YAC/B,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,KAAK;YACL,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,QAAQ;YAC7C,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW;YACnD,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI;YACnD,eAAe,EAAE,aAAa,CAAC,YAAY,CAAC,eAAe;YAC3D,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;YAChD,UAAU,EAAE;gBACV,OAAO,EAAE,SAAS,CAAC,IAAI;gBACvB,UAAU,EAAE,SAAS,CAAC,UAAU;aACjC;YACD,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;SACpC,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;QACnF,MAAM,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAEzC,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,WAAW;YACX,WAAW;SACZ,CAAA;IACH,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,SAAS,CAAC,WAAW,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -39,16 +39,41 @@ function fuzzyMatchesWord(text, keyword, maxDist = 2) {
39
39
  }
40
40
  return false;
41
41
  }
42
+ const KEYWORD_CACHE = new Map();
43
+ const TEXT_LOWER_CACHE = new Map();
44
+ const TEXT_LOWER_CACHE_MAX = 512;
45
+ function getKeywordInfo(keyword) {
46
+ const cached = KEYWORD_CACHE.get(keyword);
47
+ if (cached !== undefined)
48
+ return cached;
49
+ const lower = keyword.toLowerCase();
50
+ const isPhrase = lower.includes(' ') || lower.includes('.') || lower.includes('/') || lower.includes('-');
51
+ const wordRegex = isPhrase ? null : new RegExp(`\\b${escapeRegex(lower)}\\b`);
52
+ const info = { lower, isPhrase, wordRegex };
53
+ KEYWORD_CACHE.set(keyword, info);
54
+ return info;
55
+ }
56
+ function lowerText(text) {
57
+ const cached = TEXT_LOWER_CACHE.get(text);
58
+ if (cached !== undefined)
59
+ return cached;
60
+ const lower = text.toLowerCase();
61
+ if (TEXT_LOWER_CACHE.size >= TEXT_LOWER_CACHE_MAX) {
62
+ // drop oldest insertion to bound memory; Map preserves insertion order.
63
+ const firstKey = TEXT_LOWER_CACHE.keys().next().value;
64
+ if (firstKey !== undefined)
65
+ TEXT_LOWER_CACHE.delete(firstKey);
66
+ }
67
+ TEXT_LOWER_CACHE.set(text, lower);
68
+ return lower;
69
+ }
42
70
  export function matchesKeyword(text, keyword) {
43
- const normalizedText = text.toLowerCase();
44
- const normalizedKeyword = keyword.toLowerCase();
45
- if (normalizedKeyword.includes(' ') ||
46
- normalizedKeyword.includes('.') ||
47
- normalizedKeyword.includes('/') ||
48
- normalizedKeyword.includes('-')) {
49
- return normalizedText.includes(normalizedKeyword);
71
+ const info = getKeywordInfo(keyword);
72
+ const normalizedText = lowerText(text);
73
+ if (info.isPhrase) {
74
+ return normalizedText.includes(info.lower);
50
75
  }
51
- return new RegExp(`\\b${escapeRegex(normalizedKeyword)}\\b`, 'i').test(normalizedText);
76
+ return info.wordRegex.test(normalizedText);
52
77
  }
53
78
  /**
54
79
  * Fuzzy keyword scoring — ONLY used as a fallback when exact matching produces zero hits.
@@ -56,24 +81,52 @@ export function matchesKeyword(text, keyword) {
56
81
  * Requires keywords of 5+ characters to avoid short-word collisions.
57
82
  */
58
83
  export function fuzzyKeywordScore(text, keywords) {
59
- const lower = text.toLowerCase();
60
- return keywords.reduce((total, keyword) => {
61
- const k = keyword.toLowerCase();
84
+ const lower = lowerText(text);
85
+ let total = 0;
86
+ for (let i = 0; i < keywords.length; i++) {
87
+ const k = keywords[i].toLowerCase();
62
88
  if (k.length < 5)
63
- return total;
89
+ continue;
64
90
  if (k.includes(' ') || k.includes('.') || k.includes('/') || k.includes('-'))
65
- return total;
66
- return total + (fuzzyMatchesWord(lower, k, 1) ? 1 : 0);
67
- }, 0);
91
+ continue;
92
+ if (fuzzyMatchesWord(lower, k, 1))
93
+ total += 1;
94
+ }
95
+ return total;
68
96
  }
69
97
  export function hasAny(text, keywords) {
70
- return keywords.some((keyword) => matchesKeyword(text, keyword));
98
+ const normalizedText = lowerText(text);
99
+ for (let i = 0; i < keywords.length; i++) {
100
+ const info = getKeywordInfo(keywords[i]);
101
+ if (info.isPhrase) {
102
+ if (normalizedText.includes(info.lower))
103
+ return true;
104
+ }
105
+ else {
106
+ if (info.wordRegex.test(normalizedText))
107
+ return true;
108
+ }
109
+ }
110
+ return false;
71
111
  }
72
112
  export function countMatches(text, keywords) {
73
- return keywords.reduce((total, keyword) => total + (matchesKeyword(text, keyword) ? 1 : 0), 0);
113
+ const normalizedText = lowerText(text);
114
+ let total = 0;
115
+ for (let i = 0; i < keywords.length; i++) {
116
+ const info = getKeywordInfo(keywords[i]);
117
+ if (info.isPhrase) {
118
+ if (normalizedText.includes(info.lower))
119
+ total += 1;
120
+ }
121
+ else {
122
+ if (info.wordRegex.test(normalizedText))
123
+ total += 1;
124
+ }
125
+ }
126
+ return total;
74
127
  }
75
128
  export function keywordScore(prompt, keywords) {
76
- return keywords.reduce((total, keyword) => total + (matchesKeyword(prompt, keyword) ? 1 : 0), 0);
129
+ return countMatches(prompt, keywords);
77
130
  }
78
131
  export const LANE_ROUTES = [
79
132
  {
@@ -1 +1 @@
1
- {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../src/lib/keywords.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../src/lib/keywords.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AxAIService } from '@ax-llm/ax';
2
+ export type LLMProvider = 'tangle-router' | 'anthropic' | 'groq' | 'openai' | 'together' | 'google-gemini';
3
+ export interface LLMOptions {
4
+ provider?: LLMProvider;
5
+ model?: string;
6
+ apiKey?: string;
7
+ }
8
+ export declare function isLLMAvailable(): boolean;
9
+ export declare function createLLM(opts?: LLMOptions): AxAIService;
@@ -0,0 +1,70 @@
1
+ import { ai } from '@ax-llm/ax';
2
+ const ROUTER_URL = 'https://router.tangle.tools/v1';
3
+ const ROUTER_DEFAULT_MODEL = 'anthropic/claude-haiku-4-5';
4
+ const DEFAULT_MODELS = {
5
+ 'tangle-router': ROUTER_DEFAULT_MODEL,
6
+ groq: 'llama-3.3-70b-versatile',
7
+ anthropic: 'claude-haiku-4-5-20251001',
8
+ openai: 'gpt-4o-mini',
9
+ together: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
10
+ 'google-gemini': 'gemini-2.0-flash',
11
+ };
12
+ function envKey(provider) {
13
+ if (provider === 'tangle-router')
14
+ return process.env['TANGLE_ROUTER_USER_KEY'];
15
+ if (provider === 'groq')
16
+ return process.env['GROQ_API_KEY'];
17
+ if (provider === 'anthropic')
18
+ return process.env['ANTHROPIC_API_KEY'];
19
+ if (provider === 'together')
20
+ return process.env['TOGETHER_API_KEY'];
21
+ if (provider === 'google-gemini')
22
+ return process.env['GEMINI_API_KEY'] ?? process.env['GOOGLE_AI_KEY'];
23
+ return process.env['OPENAI_API_KEY'];
24
+ }
25
+ function detectProvider() {
26
+ const explicit = process.env['STARTER_FOUNDRY_LLM_PROVIDER'];
27
+ if (explicit && envKey(explicit))
28
+ return explicit;
29
+ // Tangle router is the preferred path for Tangle projects — routes through
30
+ // the billing/governance/observability plane instead of direct provider APIs.
31
+ if (process.env['TANGLE_ROUTER_USER_KEY'])
32
+ return 'tangle-router';
33
+ if (process.env['ANTHROPIC_API_KEY'])
34
+ return 'anthropic';
35
+ if (process.env['GROQ_API_KEY'])
36
+ return 'groq';
37
+ if (process.env['TOGETHER_API_KEY'])
38
+ return 'together';
39
+ if (process.env['OPENAI_API_KEY'])
40
+ return 'openai';
41
+ if (process.env['GEMINI_API_KEY'] ?? process.env['GOOGLE_AI_KEY'])
42
+ return 'google-gemini';
43
+ return null;
44
+ }
45
+ export function isLLMAvailable() {
46
+ return detectProvider() !== null;
47
+ }
48
+ export function createLLM(opts = {}) {
49
+ const provider = opts.provider ?? detectProvider();
50
+ if (!provider) {
51
+ throw new Error('No LLM provider configured. Set TANGLE_ROUTER_USER_KEY (preferred for Tangle) or a direct provider key.');
52
+ }
53
+ const apiKey = opts.apiKey ?? envKey(provider);
54
+ if (!apiKey) {
55
+ throw new Error(`Missing API key for provider ${provider}.`);
56
+ }
57
+ const model = opts.model ?? DEFAULT_MODELS[provider];
58
+ if (provider === 'tangle-router') {
59
+ // OpenAI-compatible proxy at router.tangle.tools. Every Tangle LLM call
60
+ // should flow through here so spend + traces + guardrails are centralized.
61
+ return ai({
62
+ name: 'openai',
63
+ apiKey,
64
+ apiURL: ROUTER_URL,
65
+ config: { model },
66
+ });
67
+ }
68
+ return ai({ name: provider, apiKey, config: { model } });
69
+ }
70
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/lib/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface AgentFamilyChoice {
2
+ family: string;
3
+ layers: string[];
4
+ path: string;
5
+ variables?: Record<string, string>;
6
+ }
7
+ export declare function buildEvmContractLayers(text: string): string[];
8
+ export declare function buildEvmContractVariables(text: string): Record<string, string>;
9
+ export declare function buildSolanaProgramLayers(text: string): string[];
10
+ export declare function buildSolanaProgramVariables(text: string): Record<string, string>;
11
+ export declare function chooseAgentFamily(text: string): AgentFamilyChoice;
@@ -0,0 +1,119 @@
1
+ // Contract + program layer/variable builders.
2
+ //
3
+ // Given a prompt, chooses:
4
+ // - EVM: forge-foundation vs hardhat-ts, plus add-on capabilities (deploy,
5
+ // LayerZero OFT, ERC-4337) and a concrete contract name.
6
+ // - Solana: solana-native-rust base plus a capability (perps, amm, nft,
7
+ // launchpad, staking, prediction) and a concrete instruction name.
8
+ // - Agent: agent-service-{rust,py,ts} plus the agent library variable.
9
+ //
10
+ // Pure functions — no I/O, no mutation.
11
+ import { hasAny, matchesKeyword } from '../keywords.js';
12
+ import { detectEvmDeployPattern, detectHardhatExplicit } from './detectors.js';
13
+ export function buildEvmContractLayers(text) {
14
+ const hardhatExplicit = detectHardhatExplicit(text);
15
+ const layers = [hardhatExplicit ? 'framework:hardhat-ts' : 'framework:forge-foundation'];
16
+ if (!hardhatExplicit && detectEvmDeployPattern(text)) {
17
+ layers.push('capability:evm-deploy-foundry');
18
+ }
19
+ if (!hardhatExplicit &&
20
+ hasAny(text, ['layerzero', 'oft', 'bridge tokens', 'sendtokens script', 'omnichain fungible token'])) {
21
+ layers.push('capability:evm-layerzero-oft');
22
+ }
23
+ else if (!hardhatExplicit &&
24
+ hasAny(text, ['erc-4337', 'erc4337', 'bundler', 'permissionless.js', 'gasless mint', 'account abstraction'])) {
25
+ layers.push('capability:evm-account-abstraction');
26
+ }
27
+ return layers;
28
+ }
29
+ export function buildEvmContractVariables(text) {
30
+ if (hasAny(text, ['layerzero', 'oft', 'omnichain fungible token']))
31
+ return { contractName: 'OmnichainToken' };
32
+ if (hasAny(text, ['erc721', 'erc-721', 'nft collection', 'gasless mint']))
33
+ return { contractName: 'GaslessCollectible' };
34
+ if (hasAny(text, ['erc20', 'erc-20', 'sample erc20']))
35
+ return { contractName: 'XLayerToken' };
36
+ return { contractName: 'Counter' };
37
+ }
38
+ export function buildSolanaProgramLayers(text) {
39
+ const layers = ['framework:solana-native-rust'];
40
+ if (hasAny(text, ['perpetual', 'futures', 'funding rate', 'liquidation', 'insurance fund', 'cross-collateral'])) {
41
+ layers.push('capability:solana-perps');
42
+ }
43
+ else if (hasAny(text, ['concentrated liquidity', 'tick-based liquidity', 'swap router', 'position nft'])) {
44
+ layers.push('capability:solana-amm');
45
+ }
46
+ else if (hasAny(text, ['nft marketplace', 'compressed nfts', 'royalty enforcement', 'bundle sales'])) {
47
+ layers.push('capability:solana-nft');
48
+ }
49
+ else if (hasAny(text, ['launchpad', 'fair launches', 'dutch auction', 'bonding curve', 'claim portal'])) {
50
+ layers.push('capability:solana-launchpad');
51
+ }
52
+ else if (hasAny(text, ['staking platform', 'veToken', 'rewards dashboard', 'auto-compound', 'validator delegation'])) {
53
+ layers.push('capability:solana-staking');
54
+ }
55
+ else if (hasAny(text, ['prediction market', 'binary (yes/no)', 'switchboard oracle', 'scalar', 'categorical'])) {
56
+ layers.push('capability:solana-prediction');
57
+ }
58
+ return layers;
59
+ }
60
+ export function buildSolanaProgramVariables(text) {
61
+ if (hasAny(text, ['perpetual', 'futures']))
62
+ return { instructionName: 'InitializePerpMarket' };
63
+ if (hasAny(text, ['concentrated liquidity', 'amm dex', 'swap router']))
64
+ return { instructionName: 'InitializePool' };
65
+ if (hasAny(text, ['nft marketplace', 'compressed nfts']))
66
+ return { instructionName: 'CreateListing' };
67
+ if (hasAny(text, ['launchpad', 'fair launches', 'bonding curve']))
68
+ return { instructionName: 'CreateLaunch' };
69
+ if (hasAny(text, ['staking platform', 'veToken', 'auto-compound']))
70
+ return { instructionName: 'InitializeStakePool' };
71
+ if (hasAny(text, ['prediction market', 'scalar', 'categorical']))
72
+ return { instructionName: 'CreateMarket' };
73
+ return { instructionName: 'InitializeTreasury' };
74
+ }
75
+ export function chooseAgentFamily(text) {
76
+ if (hasAny(text, ['rust', 'cargo', 'rig', 'rust agent'])) {
77
+ return {
78
+ family: 'agent-service-rust',
79
+ layers: ['framework:agent-service-rust'],
80
+ path: 'apps/agent',
81
+ variables: {
82
+ agentLibrary: matchesKeyword(text, 'rig') ? 'rig' : 'rust-agent',
83
+ },
84
+ };
85
+ }
86
+ if (hasAny(text, ['python', 'fastapi', 'pydanticai', 'crewai', 'autogen', 'agno', 'llamaindex', 'agentkit', 'python agent', 'unsloth', 'qlora'])) {
87
+ let agentLibrary = 'pydanticai';
88
+ if (text.includes('crewai'))
89
+ agentLibrary = 'crewai';
90
+ else if (text.includes('autogen'))
91
+ agentLibrary = 'autogen';
92
+ else if (text.includes('agno'))
93
+ agentLibrary = 'agno';
94
+ else if (text.includes('llamaindex'))
95
+ agentLibrary = 'llamaindex';
96
+ else if (text.includes('agentkit'))
97
+ agentLibrary = 'agentkit';
98
+ return {
99
+ family: 'agent-service-py',
100
+ layers: ['framework:agent-service-py'],
101
+ path: 'apps/agent',
102
+ variables: { agentLibrary },
103
+ };
104
+ }
105
+ let agentLibrary = 'openai-agents';
106
+ if (text.includes('langgraph'))
107
+ agentLibrary = 'langgraph';
108
+ else if (text.includes('mastra'))
109
+ agentLibrary = 'mastra';
110
+ else if (hasAny(text, ['anthropic sdk', 'claude sdk']))
111
+ agentLibrary = 'anthropic-sdk';
112
+ return {
113
+ family: 'agent-service-ts',
114
+ layers: ['framework:agent-service-ts'],
115
+ path: 'apps/agent',
116
+ variables: { agentLibrary },
117
+ };
118
+ }
119
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/planner/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function detectDatabaseSlot(text: string): string | null;
2
+ export declare function detectSdkSlot(text: string, partner: string | null): string | null;
3
+ export declare function detectAuthSlot(text: string): string | null;
4
+ export declare function detectPaymentsSlot(text: string): string | null;
5
+ export declare function detectQueueSlot(text: string): string | null;
6
+ export declare function detectTangleOraclePattern(text: string): boolean;
7
+ export declare function detectTangleCustodyPattern(text: string): boolean;
8
+ export declare function detectEvmDeployPattern(text: string): boolean;
9
+ export declare function detectHardhatExplicit(text: string): boolean;
10
+ export declare function detectEvmSupportApiPattern(text: string): boolean;
11
+ export declare function inferPartner(text: string): string | null;
12
+ export declare function needsSupportApiLane(text: string): boolean;
13
+ export declare function detectSolanaProductApiPattern(text: string): boolean;
14
+ export declare function detectSolanaWorkerPattern(text: string): boolean;
@@ -0,0 +1,195 @@
1
+ // Slot + pattern detectors used by the planner. Pure string → string|null|boolean.
2
+ // No I/O, no mutation — every function takes a lowercased prompt and returns a
3
+ // verdict. Split out of prompt-planner.ts so the main routing file stays focused
4
+ // on the pipeline instead of keyword matchers.
5
+ import { hasAny } from '../keywords.js';
6
+ export function detectDatabaseSlot(text) {
7
+ if (text.includes('convex'))
8
+ return 'database:convex';
9
+ if (text.includes('postgres'))
10
+ return 'database:postgres';
11
+ if (text.includes('mongodb') || text.includes('mongo'))
12
+ return 'database:mongodb';
13
+ if (text.includes('sqlite'))
14
+ return 'database:sqlite';
15
+ return null;
16
+ }
17
+ export function detectSdkSlot(text, partner) {
18
+ if (text.includes('solana web3') || text.includes('@solana/web3') || text.includes('wallet adapter')) {
19
+ return 'sdk:solana-web3';
20
+ }
21
+ if (partner === 'coinbase')
22
+ return 'sdk:coinbase-cdp';
23
+ if (text.includes('coinbase cdp') || text.includes('coinbase sdk'))
24
+ return 'sdk:coinbase-cdp';
25
+ if (partner === 'xlayer' ||
26
+ partner === 'arbitrum' ||
27
+ hasAny(text, ['walletconnect', 'wallet connect', 'okx wallet', 'metamask', 'viem', 'ethers'])) {
28
+ return 'sdk:evm-wallet';
29
+ }
30
+ return null;
31
+ }
32
+ export function detectAuthSlot(text) {
33
+ if (text.includes('clerk'))
34
+ return 'auth:clerk';
35
+ if (text.includes('better auth') || text.includes('better-auth'))
36
+ return 'auth:better-auth';
37
+ if (text.includes('supabase auth') || text.includes('supabase-auth'))
38
+ return 'auth:supabase-auth';
39
+ return null;
40
+ }
41
+ export function detectPaymentsSlot(text) {
42
+ if (text.includes('coinbase commerce'))
43
+ return 'payments:coinbase-commerce';
44
+ if (text.includes('stripe') || text.includes('subscription') || text.includes('billing') || text.includes('checkout')) {
45
+ return 'payments:stripe';
46
+ }
47
+ return null;
48
+ }
49
+ export function detectQueueSlot(text) {
50
+ if (text.includes('trigger.dev') || text.includes('trigger dev'))
51
+ return 'queue:trigger-dev';
52
+ if (text.includes('bullmq') || text.includes('queue') || text.includes('background job'))
53
+ return 'queue:bullmq';
54
+ return null;
55
+ }
56
+ export function detectTangleOraclePattern(text) {
57
+ return (hasAny(text, ['tangle', 'tangle network', 'tangle native']) &&
58
+ hasAny(text, ['oracle', 'price feed', 'attestation', 'feeder', 'operator rewards', 'slashing', 'data source']));
59
+ }
60
+ export function detectTangleCustodyPattern(text) {
61
+ return (hasAny(text, ['tangle', 'tangle network', 'tangle native', 'frost']) &&
62
+ hasAny(text, ['custody', 'mpc', 'threshold signing', 'key resharing', 'policy engine', 'signing ceremony']));
63
+ }
64
+ export function detectEvmDeployPattern(text) {
65
+ return hasAny(text, [
66
+ 'foundry.toml',
67
+ 'deploy script',
68
+ 'deploy task',
69
+ 'contract verification',
70
+ 'verify',
71
+ 'oklink explorer',
72
+ '.env template',
73
+ 'private_key',
74
+ 'sample erc20',
75
+ ]);
76
+ }
77
+ export function detectHardhatExplicit(text) {
78
+ return text.includes('hardhat') && !hasAny(text, ['foundry', 'forge']);
79
+ }
80
+ export function detectEvmSupportApiPattern(text) {
81
+ return hasAny(text, [
82
+ 'indexer',
83
+ 'subgraph',
84
+ 'events',
85
+ 'relayer',
86
+ 'paymaster',
87
+ 'bundler',
88
+ 'keeper',
89
+ 'oracle',
90
+ 'bridge',
91
+ 'bridges',
92
+ 'layerzero',
93
+ 'oft',
94
+ 'sendtokens',
95
+ 'hook',
96
+ 'analytics',
97
+ 'portfolio',
98
+ 'metrics',
99
+ 'multicall',
100
+ 'wallet balance',
101
+ 'transaction count',
102
+ 'gas price',
103
+ 'websocket',
104
+ '/stats',
105
+ ]);
106
+ }
107
+ export function inferPartner(text) {
108
+ if (hasAny(text, ['coinbase', 'base network', 'coinbase commerce', 'coinbase wallet', 'coinbase cdp'])) {
109
+ return 'coinbase';
110
+ }
111
+ if (hasAny(text, ['tangle', 'blueprint sdk', 'cargo tangle']))
112
+ return 'tangle';
113
+ if (hasAny(text, ['eigenlayer', 'avs']))
114
+ return 'eigenlayer';
115
+ if (hasAny(text, ['x layer', 'xlayer', 'okb', 'oklink', 'okx']))
116
+ return 'xlayer';
117
+ if (hasAny(text, ['arbitrum', 'stylus']))
118
+ return 'arbitrum';
119
+ if (hasAny(text, ['solana', 'anchor', 'pda', 'wallet adapter']))
120
+ return 'solana';
121
+ return null;
122
+ }
123
+ export function needsSupportApiLane(text) {
124
+ return hasAny(text, [
125
+ 'order management',
126
+ 'order history',
127
+ 'payment webhook',
128
+ 'quote generation',
129
+ 'claims',
130
+ 'transaction history',
131
+ 'history/audit',
132
+ 'portfolio',
133
+ 'analytics',
134
+ 'monitoring',
135
+ 'indexer',
136
+ 'websocket',
137
+ 'database',
138
+ 'metrics',
139
+ 'p&l',
140
+ 'api endpoints',
141
+ 'consumer integration',
142
+ 'historical data',
143
+ 'data source',
144
+ 'programmatic access',
145
+ 'control plane',
146
+ 'agent state',
147
+ 'tool logs',
148
+ 'memory',
149
+ 'thread history',
150
+ 'execution traces',
151
+ ]);
152
+ }
153
+ export function detectSolanaProductApiPattern(text) {
154
+ return hasAny(text, [
155
+ 'pyth',
156
+ 'switchboard',
157
+ 'jupiter',
158
+ 'openbook',
159
+ 'analytics',
160
+ 'leaderboard',
161
+ 'activity feed',
162
+ 'creator dashboard',
163
+ 'launch calendar',
164
+ 'pool discovery',
165
+ 'market browser',
166
+ 'market data',
167
+ 'oracle integration',
168
+ 'price feeds',
169
+ 'dashboard',
170
+ 'staking dashboard',
171
+ 'royalty analytics',
172
+ 'position explorer',
173
+ 'pool explorer',
174
+ ]);
175
+ }
176
+ export function detectSolanaWorkerPattern(text) {
177
+ return hasAny(text, [
178
+ 'keeper',
179
+ 'liquidation',
180
+ 'funding rate',
181
+ 'pyth price feeds',
182
+ 'switchboard',
183
+ 'oracle integration',
184
+ 'disputes',
185
+ 'auto-deleveraging',
186
+ 'rebalance',
187
+ 'rebalancing',
188
+ 'rewards distribution',
189
+ 'reward distribution',
190
+ 'vesting',
191
+ 'sale monitor',
192
+ 'auto-compound',
193
+ ]);
194
+ }
195
+ //# sourceMappingURL=detectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../src/lib/planner/detectors.ts"],"names":[],"mappings":"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"}