agent-nuvira 2.7.0 โ 2.7.2
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/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +17 -3
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/app.js +26 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +108 -2
- package/dist/cli/chat.js.map +1 -1
- package/dist/config/auth.js +18 -0
- package/dist/config/jwt.js +24 -0
- package/dist/config/keys.js +14 -0
- package/dist/gateway/chat-store.d.ts +32 -5
- package/dist/gateway/chat-store.d.ts.map +1 -1
- package/dist/gateway/chat-store.js +52 -6
- package/dist/gateway/chat-store.js.map +1 -1
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +54 -10
- package/dist/gateway/registry.js.map +1 -1
- package/dist/inference/model-validator.d.ts.map +1 -1
- package/dist/inference/model-validator.js +11 -1
- package/dist/inference/model-validator.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts +31 -0
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +41 -0
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +5 -3
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +2 -2
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/middleware/auth.js +30 -0
- package/dist/nlu/conversation-gate.js +1 -1
- package/dist/nlu/conversation-gate.js.map +1 -1
- package/dist/nlu/entities.d.ts.map +1 -1
- package/dist/nlu/entities.js +12 -0
- package/dist/nlu/entities.js.map +1 -1
- package/dist/nlu/intent.d.ts.map +1 -1
- package/dist/nlu/intent.js +83 -15
- package/dist/nlu/intent.js.map +1 -1
- package/dist/passport.js +34 -0
- package/dist/routes/auth.js +42 -0
- package/dist/routes/user.js +31 -0
- package/dist/server.js +17 -0
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +14 -0
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/release-sync.d.ts +52 -16
- package/dist/tools/release-sync.d.ts.map +1 -1
- package/dist/tools/release-sync.js +143 -79
- package/dist/tools/release-sync.js.map +1 -1
- package/dist/web-dashboard/src/App.js +85 -0
- package/dist/web-dashboard/src/admin-auth.test.js +186 -0
- package/dist/web-dashboard/src/ansi.js +23 -0
- package/dist/web-dashboard/src/ansi.test.js +31 -0
- package/dist/web-dashboard/src/api-admin-auth.test.js +172 -0
- package/dist/web-dashboard/src/api-admin.test.js +65 -0
- package/dist/web-dashboard/src/api-hub.test.js +117 -0
- package/dist/web-dashboard/src/api.js +1421 -0
- package/dist/web-dashboard/src/api.test.js +51 -0
- package/dist/web-dashboard/src/artifacts.js +128 -0
- package/dist/web-dashboard/src/artifacts.test.js +139 -0
- package/dist/web-dashboard/src/components/AdminPanel.js +567 -0
- package/dist/web-dashboard/src/components/AdminPanel.test.js +288 -0
- package/dist/web-dashboard/src/components/AgentHub.js +1580 -0
- package/dist/web-dashboard/src/components/AgentHub.test.js +343 -0
- package/dist/web-dashboard/src/components/BedrockOnboarding.js +320 -0
- package/dist/web-dashboard/src/components/BenchmarkCharts.js +228 -0
- package/dist/web-dashboard/src/components/ChatPage.js +1586 -0
- package/dist/web-dashboard/src/components/ChatPage.test.js +899 -0
- package/dist/web-dashboard/src/components/ContactsPage.js +141 -0
- package/dist/web-dashboard/src/components/CostDashboard.js +105 -0
- package/dist/web-dashboard/src/components/DAGView.js +477 -0
- package/dist/web-dashboard/src/components/DAGView.test.js +147 -0
- package/dist/web-dashboard/src/components/EnvVarEditor.js +138 -0
- package/dist/web-dashboard/src/components/EvalsPage.js +73 -0
- package/dist/web-dashboard/src/components/EvalsPage.test.js +120 -0
- package/dist/web-dashboard/src/components/ExecutionHistory.js +201 -0
- package/dist/web-dashboard/src/components/GatewayPage.js +40 -0
- package/dist/web-dashboard/src/components/GatewayPage.test.js +74 -0
- package/dist/web-dashboard/src/components/HealthPanel.js +68 -0
- package/dist/web-dashboard/src/components/HistoryBrowser.js +34 -0
- package/dist/web-dashboard/src/components/Layout.js +50 -0
- package/dist/web-dashboard/src/components/Markdown.js +152 -0
- package/dist/web-dashboard/src/components/Markdown.test.js +126 -0
- package/dist/web-dashboard/src/components/MarkdownZeroDep.js +237 -0
- package/dist/web-dashboard/src/components/MemoryPanel.js +81 -0
- package/dist/web-dashboard/src/components/ModelTimeline.js +298 -0
- package/dist/web-dashboard/src/components/ModelsPanel.js +1484 -0
- package/dist/web-dashboard/src/components/ModelsPanel.test.js +460 -0
- package/dist/web-dashboard/src/components/Overview.js +123 -0
- package/dist/web-dashboard/src/components/PhaseTimeline.js +359 -0
- package/dist/web-dashboard/src/components/PhaseTimeline.test.js +234 -0
- package/dist/web-dashboard/src/components/PlatformConfigSection.js +384 -0
- package/dist/web-dashboard/src/components/PlatformConfigSection.test.js +106 -0
- package/dist/web-dashboard/src/components/PlatformsPage.js +250 -0
- package/dist/web-dashboard/src/components/QuotaPanel.js +159 -0
- package/dist/web-dashboard/src/components/QuotaPanel.test.js +85 -0
- package/dist/web-dashboard/src/components/RequestsPanel.js +229 -0
- package/dist/web-dashboard/src/components/RequestsPanel.test.js +103 -0
- package/dist/web-dashboard/src/components/RoutingInsightsPanel.js +938 -0
- package/dist/web-dashboard/src/components/RoutingInsightsPanel.test.js +339 -0
- package/dist/web-dashboard/src/components/RoutingWalkthrough.js +408 -0
- package/dist/web-dashboard/src/components/RoutingWalkthrough.test.js +209 -0
- package/dist/web-dashboard/src/components/TaskConsole.js +119 -0
- package/dist/web-dashboard/src/components/TaskConsole.test.js +123 -0
- package/dist/web-dashboard/src/components/TasksPage.js +256 -0
- package/dist/web-dashboard/src/components/TasksPage.test.js +103 -0
- package/dist/web-dashboard/src/components/TracePanel.js +306 -0
- package/dist/web-dashboard/src/components/WhatsAppPanel.js +195 -0
- package/dist/web-dashboard/src/components/WhatsAppPanel.test.js +122 -0
- package/dist/web-dashboard/src/jsonOrNull.js +37 -0
- package/dist/web-dashboard/src/main.js +15 -0
- package/dist/web-dashboard/src/mask.js +11 -0
- package/dist/web-dashboard/vite.config.js +23 -0
- package/dist/web-dashboard/vitest.config.js +15 -0
- package/package.json +5 -3
|
@@ -38,7 +38,7 @@ import { parseRequestSync } from './parser.js';
|
|
|
38
38
|
* "delete", where "why did the update fail?" is a genuine question) โ the
|
|
39
39
|
* gate must not misfire on a question.
|
|
40
40
|
*/
|
|
41
|
-
const STRONG_TASK_VERBS = 'fix|debug|repair|troubleshoot|create|build|implement|generate|scaffold|bootstrap|develop|refactor|migrate|deploy|install|configure|setup|set up|integrate|optimize|restructure';
|
|
41
|
+
const STRONG_TASK_VERBS = 'fix|debug|repair|troubleshoot|patch|address|diagnose|correct|create|build|implement|generate|scaffold|bootstrap|develop|refactor|migrate|deploy|install|configure|setup|set up|integrate|optimize|restructure';
|
|
42
42
|
/** Verb at the very start of the ask ("fix the failing test", "deploy the api"). */
|
|
43
43
|
const TASK_VERB_AT_START = new RegExp(`^(?:please\\s+)?(?:${STRONG_TASK_VERBS})\\b`, 'i');
|
|
44
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-gate.js","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,iBAAiB,GACrB,
|
|
1
|
+
{"version":3,"file":"conversation-gate.js","sourceRoot":"","sources":["../../src/nlu/conversation-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,iBAAiB,GACrB,+MAA+M,CAAC;AAElN,oFAAoF;AACpF,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,sBAAsB,iBAAiB,MAAM,EAAE,GAAG,CAAC,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,wHAAwH,iBAAiB,UAAU,EACnJ,GAAG,CACJ,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,yEAAyE;IACzE,uCAAuC;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA+B;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/nlu/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAQlE,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,EAAE,WAAW,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,eAAe,CAAC;CAC1C;AAkBD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CA4Bb;
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/nlu/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAQlE,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,EAAE,WAAW,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uCAAuC;IACvC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,eAAe,CAAC;CAC1C;AAkBD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CA4Bb;AAwCD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,SAAS,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAgFzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAyBtE;AAID;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAGzB;AAID,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/nlu/entities.js
CHANGED
|
@@ -102,6 +102,18 @@ The request is one of these intents:
|
|
|
102
102
|
- "configure" โ set up api keys, switch providers/models, change config
|
|
103
103
|
- "unknown" โ anything not clearly one of the above
|
|
104
104
|
|
|
105
|
+
Examples:
|
|
106
|
+
- "sort out my auth stuff" โ create (the user wants to build/implement auth)
|
|
107
|
+
- "the payments module is broken" โ fix (a module is broken = needs repair)
|
|
108
|
+
- "can you handle the deployment?" โ create (deploy = a coding task)
|
|
109
|
+
- "what's the difference between JWT and sessions?" โ explain (a comparison question)
|
|
110
|
+
- "set up my groq key" โ configure (api key setup)
|
|
111
|
+
- "how's the project going?" โ explain (status question)
|
|
112
|
+
- "i need a landing page" โ create (new page to build)
|
|
113
|
+
- "the test suite keeps failing" โ fix (tests failing = needs debugging)
|
|
114
|
+
- "tell me about the auth module" โ explain (requesting information)
|
|
115
|
+
- "make it use postgres instead" โ create (database migration task)
|
|
116
|
+
|
|
105
117
|
Return ONLY a JSON object matching EXACTLY this shape (no markdown fences, no commentary):
|
|
106
118
|
{
|
|
107
119
|
"intent": "create" | "continue" | "fix" | "explain" | "configure" | "unknown",
|
package/dist/nlu/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/nlu/entities.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/nlu/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GAKrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,GAGrB,MAAM,aAAa,CAAC;AAErB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuC;IACrE,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,IAAI;CACd,CAAC;AAkBF,+EAA+E;AAE/E,4EAA4E;AAC5E,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;IAC3E,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI;IACxE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY;IAC3E,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;IAC1E,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAC1E,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;CACzD,CAAC;AAEF,iFAAiF;AACjF,MAAM,YAAY,GAChB,uOAAuO,CAAC;AAE1O;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,SAAkB;IAElB,MAAM,QAAQ,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE1E,+EAA+E;IAC/E,IAAI,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;IAE5C,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzC,mEAAmE;IACnE,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAE9C,2BAA2B;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+EAA+E;AAE/E,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAkCI,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,UAAwB,EACxB,OAAkB,EAClB,GAAY;IAEZ,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI,SAA6B,CAAC;IAClC,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACnE,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEpE,+DAA+D;IAC/D,IAAI,UAAU,CAAC,UAAU,IAAI,oBAAoB,EAAE,CAAC;QAClD,OAAO;YACL,GAAG,UAAU;YACb,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;YAC1D,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,mDAAmD,GAAG,EAAE,CAAC,CAAC;QACvE,OAAO;YACL,GAAG,UAAU;YACb,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;YAC1D,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACjF,OAAO;YACL,GAAG,UAAU;YACb,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;YAC1D,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO;QACzD,KAAK,EAAE;YACL,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;aACjC,CAAC;SACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACd,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS;QAC/D,UAAU,EAAE;YACV,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;aACtC,CAAC;SACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KACpE,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,sEAAsE;QACtE,qEAAqE;QACrE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,yEAAyE;IACzE,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7D,IAAI,UAAU;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtD,yDAAyD;IACzD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5B,wEAAwE;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAE1E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAkB,EAClB,GAAY;IAEZ,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
|
package/dist/nlu/intent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/nlu/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtG,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExE,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAMxC,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/nlu/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtG,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExE,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAMxC,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAoBlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,IAAiB,GAAG,YAAY,GAAG,IAAI,CAerG;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAe9D;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAepE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiChE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAqDjE;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,IAAiB,GAAG,SAAS,GAAG,SAAS,CAqBtG;AAID;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,IAAiB,GAAG,YAAY,CAa3F"}
|
package/dist/nlu/intent.js
CHANGED
|
@@ -22,8 +22,19 @@ export const RULE_TRUST_THRESHOLD = 0.8;
|
|
|
22
22
|
// null so `classifyIntent` is a plain priority walk โ no shared state.
|
|
23
23
|
/** Explain/interrogative โ chat ("explain caching", "how do I add JWT auth?"). */
|
|
24
24
|
export function matchExplainRule(text) {
|
|
25
|
+
// Guard: "can you fix X" or "could you debug Y" is a FIX request, not a
|
|
26
|
+
// question. The fix rule runs later in priority, but the explain rule's
|
|
27
|
+
// When a coding verb appears in COMMAND position (start or after polite
|
|
28
|
+
// prefix), it's a task request, not a question. "evaluate the test coverage"
|
|
29
|
+
// has "test" as a NOUN โ must not block. "can you deploy the api?" has
|
|
30
|
+
// "deploy" in command position โ must block (it's a task, not a question).
|
|
31
|
+
const codingTaskVerb = /^(?:please\s+|can you\s+|could you\s+|would you\s+|i need you to\s+|help me\s+)?(?:fix|debug|repair|troubleshoot|resolve|patch|address|diagnose|correct|create|build|implement|generate|scaffold|bootstrap|develop|set up|deploy|test|run|publish|ship|launch|refactor|migrate|integrate|optimize|restructure|install)\b/i;
|
|
32
|
+
const fixAsNoun = /(?:the|a|an|this|that|any)\s+fix\b/i.test(text);
|
|
33
|
+
if (codingTaskVerb.test(text) && !fixAsNoun)
|
|
34
|
+
return null;
|
|
25
35
|
if (/\b(?:explain|describe|assess|evaluate|analyze|compare|walk me through|tell me about)\b/i.test(text) ||
|
|
26
|
-
/^(?:what|how|why|when|where|which|can you|could you|would you)\b/i.test(text)
|
|
36
|
+
/^(?:what|how|why|when|where|which|can you|could you|would you)\b/i.test(text) ||
|
|
37
|
+
/\b(?:vs\.?|versus|or|compared to|difference between)\b/i.test(text)) {
|
|
27
38
|
return { intent: 'explain', confidence: 0.8, modeHint: 'chat' };
|
|
28
39
|
}
|
|
29
40
|
return null;
|
|
@@ -55,9 +66,20 @@ export function matchContinueRule(text, referenceDate = new Date()) {
|
|
|
55
66
|
* "deploy the project nuvira-fix-validation" would false-positive into fix.
|
|
56
67
|
*/
|
|
57
68
|
export function matchFixRule(text) {
|
|
58
|
-
if (/(?:^|[^\w-])(?:fix|debug|repair|troubleshoot|resolve)(?:$|[^\w-])/i.test(text)) {
|
|
69
|
+
if (/(?:^|[^\w-])(?:fix|debug|repair|troubleshoot|resolve|patch|address|diagnose|correct)(?:$|[^\w-])/i.test(text)) {
|
|
59
70
|
return { intent: 'fix', confidence: 0.85, modeHint: 'execute' };
|
|
60
71
|
}
|
|
72
|
+
// "X is broken", "X keeps failing", "X stopped working" โ implicit fix tasks.
|
|
73
|
+
// "X failed" โ standalone failure signal ("the build failed").
|
|
74
|
+
// GUARD: "why is the test failing?" is a QUESTION, not a fix request.
|
|
75
|
+
if (/^(?:what|how|why|when|where|which)\b/i.test(text))
|
|
76
|
+
return null;
|
|
77
|
+
if (/\b(?:is|are|was|were|keeps?|kept|stopped|has stopped)\s+(?:broken|failing|crashing|erroring|not working|working|dead)\b/i.test(text)) {
|
|
78
|
+
return { intent: 'fix', confidence: 0.8, modeHint: 'execute' };
|
|
79
|
+
}
|
|
80
|
+
if (/\bfailed\b/i.test(text)) {
|
|
81
|
+
return { intent: 'fix', confidence: 0.8, modeHint: 'execute' };
|
|
82
|
+
}
|
|
61
83
|
return null;
|
|
62
84
|
}
|
|
63
85
|
/** Configure โ config ("configure the gemini api key", "switch provider"). */
|
|
@@ -67,9 +89,12 @@ export function matchConfigureRule(text) {
|
|
|
67
89
|
// when the sentence does NOT lead with a create verb.
|
|
68
90
|
if (/^(?:please\s+)?(?:create|generate|write|build|make)\b/i.test(text))
|
|
69
91
|
return null;
|
|
70
|
-
if (/\b(?:configure|config)\b/i.test(text) ||
|
|
92
|
+
if (/\b(?:configure|config(?:ure)?|settings?)\b/i.test(text) ||
|
|
71
93
|
/\bapi ?key\b/i.test(text) ||
|
|
72
|
-
/\b
|
|
94
|
+
/\b\.env\b/i.test(text) ||
|
|
95
|
+
/\b(?:switch|change|set(?:\s+up)?|update)\s+(?:my|the|a|an)?\s*(?:\w+\s+)?(?:model|provider|key|token|credential)s?\b/i.test(text) ||
|
|
96
|
+
/\b(?:switch|change)\s+.*\bto\s+\w/i.test(text) // "change X to Y" pattern
|
|
97
|
+
) {
|
|
73
98
|
return { intent: 'configure', confidence: 0.85, modeHint: 'config' };
|
|
74
99
|
}
|
|
75
100
|
return null;
|
|
@@ -85,14 +110,30 @@ export function matchConfigureRule(text) {
|
|
|
85
110
|
* (test is not a writing artifact) still resolves to create.
|
|
86
111
|
*/
|
|
87
112
|
export function matchWriteRule(text) {
|
|
88
|
-
|
|
89
|
-
//
|
|
90
|
-
|
|
113
|
+
// Songs/hymns/bha_jans/shayari were missing (observed live: "Write a song in
|
|
114
|
+
// hindi โฆ for my daughter" routed to the DEVELOPER pipeline). Keep the
|
|
115
|
+
// explicit list (fast, precise) but treat it as an allowlist WITH a
|
|
116
|
+
// fallback, not the only path.
|
|
117
|
+
const writingObject = /\b(?:essay|poem|poetry|song|lyrics|hymn|anthem|shayari|ghazal|jingle|lullaby|rap|haiku|sonnet|ode|elegy|story|short story|fiction|fantasy|novel|biography|memoir|tale|fable|myth|legend|recipe|letter|article|blog(?: post)?|paragraph|composition|dialogue|screenplay|script|play|skit|monologue|speech|caption|advertisement|review|summary|prose|note|message|email|homework|assignment|poster|diagram|flowchart|flow.?chart|wireframe|mind.?map|chart|infographic|brochure|flyer|pamphlet|newsletter|report|presentation|slideshow|mockup|blueprint|layout|sketch|outline|mindmap)\b/i;
|
|
118
|
+
// Coding nouns that must NOT match the write rule โ "write a function for"
|
|
119
|
+
// or "write a test for" are dev tasks, not creative content. These nouns
|
|
120
|
+
// fall through to matchCreateRule so the coding pipeline runs. "class"
|
|
121
|
+
// excluded: "class 4 student" is a grade level, not a coding class.
|
|
122
|
+
const codingNoun = /\b(?:function|module|component|api|endpoint|route|server|database|cli|tool|service|program|script|app(?:lication)?|worker|daemon|plugin|package|library|project|schema)\b/i;
|
|
123
|
+
// Guard: coding nouns must NOT match the write rule โ "write a function for"
|
|
124
|
+
// or "write a test for" are dev tasks, not creative content. These nouns
|
|
125
|
+
// fall through to matchCreateRule so the coding pipeline runs.
|
|
126
|
+
if (codingNoun.test(text))
|
|
127
|
+
return null;
|
|
128
|
+
// Verb + article + writing object: "write an essay on elephants for class 4",
|
|
129
|
+
// "design a flow chart", "create a mind map".
|
|
130
|
+
if (/^(?:please\s+)?(?:write|build|make|create|draft|compose|prepare|design|draw|sketch)\s+(?:a|an|the|new|my|our)\s+/i.test(text) &&
|
|
91
131
|
writingObject.test(text)) {
|
|
92
132
|
return { intent: 'write', confidence: 0.85, modeHint: 'chat' };
|
|
93
133
|
}
|
|
94
|
-
// Writing verb + writing object anywhere: "please write a poem for my daughter"
|
|
95
|
-
|
|
134
|
+
// Writing verb + writing object anywhere: "please write a poem for my daughter",
|
|
135
|
+
// "design a poster for the event".
|
|
136
|
+
if (/\b(?:write|draft|compose|design|draw|sketch)\b/i.test(text) && writingObject.test(text)) {
|
|
96
137
|
return { intent: 'write', confidence: 0.8, modeHint: 'chat' };
|
|
97
138
|
}
|
|
98
139
|
return null;
|
|
@@ -103,19 +144,46 @@ export function matchWriteRule(text) {
|
|
|
103
144
|
* false-positive into developer mode.
|
|
104
145
|
*/
|
|
105
146
|
export function matchCreateRule(text) {
|
|
106
|
-
//
|
|
107
|
-
|
|
147
|
+
// GUARD FIRST: document/creative nouns must NOT match the create rule โ
|
|
148
|
+
// "create a mind map", "make a wireframe", "create a song" are DOCUMENT
|
|
149
|
+
// creation tasks, not coding. These should route to write (chat mode) so
|
|
150
|
+
// the LLM generates the document, not the coding pipeline.
|
|
151
|
+
const documentNoun = /\b(?:poster|diagram|flowchart|flow.?chart|wireframe|mind.?map|mindmap|chart|infographic|brochure|flyer|pamphlet|newsletter|report|presentation|slideshow|mockup|blueprint|sketch|outline|song|poem|story|essay|letter|article|speech|caption|logo)\b/i;
|
|
152
|
+
if (documentNoun.test(text))
|
|
153
|
+
return null;
|
|
154
|
+
// GUARD: "set up my groq key" is a configure task, not a create task.
|
|
155
|
+
if (/\b(?:api ?key|auth key|secret key|access key|private key|encryption key)\b/i.test(text))
|
|
156
|
+
return null;
|
|
157
|
+
if (/\b(?:set(?:\s+up)?|update|change|switch)\s+(?:my|the)?\s*\w*\s*(?:key|token|credential)s?\b/i.test(text))
|
|
158
|
+
return null;
|
|
159
|
+
// Verb-initial, unambiguous commands: "create a CLI tool", "implement JWT auth",
|
|
160
|
+
// "deploy the app", "test the API", "run the build".
|
|
161
|
+
if (/^(?:please\s+|can you\s+|could you\s+|would you\s+|i need you to\s+|help me\s+)?(?:create|generate|implement|scaffold|bootstrap|develop|set up|deploy|test|run|publish|ship|launch|refactor|migrate|integrate|optimize|restructure|install|configure)\b/i.test(text)) {
|
|
108
162
|
return { intent: 'create', confidence: 0.9, modeHint: 'dev' };
|
|
109
163
|
}
|
|
110
164
|
// Verb + article: "write a test", "build an api", "add a route". "add" is
|
|
111
165
|
// here (and in the object-noun branch below) โ NOT in the verb-initial list
|
|
112
166
|
// โ so the common developer phrasing "add auth to the app" routes to dev
|
|
113
167
|
// mode while "add 2 + 2" (no article, no project noun) never false-positives.
|
|
114
|
-
|
|
115
|
-
|
|
168
|
+
// GUARD (observed live: "Write a song in hindi โฆ for my daughter" hit this
|
|
169
|
+
// branch and spun up the developer pipeline): when the OBJECT is explicitly
|
|
170
|
+
// creative (a person-centric/creative frame โ "for my daughter", "about
|
|
171
|
+
// love", a language of expression), the ask is content, not code. The
|
|
172
|
+
// pipeline must never run for it โ matchWriteRule's artifact list can never
|
|
173
|
+
// cover every creative noun (song, lullaby, rap, โฆ).
|
|
174
|
+
const articleMatch = /^(?:please\s+)?(?:build|write|make|add)\s+(?:a|an|the|new)\s+/i.exec(text);
|
|
175
|
+
if (articleMatch) {
|
|
176
|
+
const creativeFrame = /\bfor (?:my|his|her|our)\b/i.test(text) ||
|
|
177
|
+
/\babout (?:love|life|friendship|family|her|him|them|us|my|his)\b/i.test(text) ||
|
|
178
|
+
/\bin (?:hindi|english|spanish|french|tamil|telugu|bengali|marathi|urdu|punjabi|gujarati|kannada|malayalam)\b/i.test(text);
|
|
179
|
+
if (!creativeFrame) {
|
|
180
|
+
return { intent: 'create', confidence: 0.85, modeHint: 'dev' };
|
|
181
|
+
}
|
|
182
|
+
return { intent: 'write', confidence: 0.8, modeHint: 'chat' };
|
|
116
183
|
}
|
|
117
|
-
// Verb + project-object noun anywhere: "I want to create a new module"
|
|
118
|
-
|
|
184
|
+
// Verb + project-object noun anywhere: "I want to create a new module",
|
|
185
|
+
// "write a test for the login function".
|
|
186
|
+
const objectNoun = /\b(?:file|program|script|app(?:lication)?|function|class|module|component|page|screen|form|dialog|modal|banner|route|api|endpoint|service|cli|tool|package|library|project|plugin|addon|extension|website|server|client|database|schema|feature|daemon|worker|test|interface|handler|controller|middleware|migration|seed|fixture|config)\b/i;
|
|
119
187
|
if ((/\b(?:create|generate|implement|scaffold|develop|add)\b/i.test(text) ||
|
|
120
188
|
/\b(?:build|write|set up)\b/i.test(text)) &&
|
|
121
189
|
objectNoun.test(text)) {
|
package/dist/nlu/intent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/nlu/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAiCnF,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,+EAA+E;AAC/E,+EAA+E;AAC/E,uEAAuE;AAEvE,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IACE,yFAAyF,CAAC,IAAI,CAC5F,IAAI,CACL;QACD,mEAAmE,CAAC,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/nlu/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAiCnF,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,+EAA+E;AAC/E,+EAA+E;AAC/E,uEAAuE;AAEvE,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,6EAA6E;IAC7E,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,cAAc,GAAG,2TAA2T,CAAC;IACnV,MAAM,SAAS,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,IACE,yFAAyF,CAAC,IAAI,CAC5F,IAAI,CACL;QACD,mEAAmE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9E,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC,EACpE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,gBAAsB,IAAI,IAAI,EAAE;IAC9E,IACE,4FAA4F,CAAC,IAAI,CAC/F,IAAI,CACL,EACD,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxD,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;YAClC,QAAQ,EAAE,QAAQ;YAClB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,mGAAmG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IACD,8EAA8E;IAC9E,+DAA+D;IAC/D,sEAAsE;IACtE,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,IAAI,0HAA0H,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1I,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,2EAA2E;IAC3E,4EAA4E;IAC5E,sDAAsD;IACtD,IAAI,wDAAwD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,IACE,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,uHAAuH,CAAC,IAAI,CAAC,IAAI,CAAC;QAClI,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,0BAA0B;MAC1E,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,6EAA6E;IAC7E,uEAAuE;IACvE,oEAAoE;IACpE,+BAA+B;IAC/B,MAAM,aAAa,GACjB,2jBAA2jB,CAAC;IAC9jB,2EAA2E;IAC3E,yEAAyE;IACzE,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,UAAU,GACd,4KAA4K,CAAC;IAC/K,6EAA6E;IAC7E,yEAAyE;IACzE,+DAA+D;IAC/D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,8EAA8E;IAC9E,8CAA8C;IAC9C,IACE,mHAAmH,CAAC,IAAI,CACtH,IAAI,CACL;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EACxB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,iFAAiF;IACjF,mCAAmC;IACnC,IAAI,iDAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,2DAA2D;IAC3D,MAAM,YAAY,GAChB,uPAAuP,CAAC;IAC1P,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,sEAAsE;IACtE,IAAI,6EAA6E,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1G,IAAI,8FAA8F,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3H,iFAAiF;IACjF,qDAAqD;IACrD,IACE,0PAA0P,CAAC,IAAI,CAC7P,IAAI,CACL,EACD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,8EAA8E;IAC9E,2EAA2E;IAC3E,4EAA4E;IAC5E,wEAAwE;IACxE,sEAAsE;IACtE,4EAA4E;IAC5E,qDAAqD;IACrD,MAAM,YAAY,GAAG,gEAAgE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjG,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,aAAa,GACjB,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,mEAAmE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9E,+GAA+G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7H,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAChE,CAAC;IACD,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,UAAU,GACd,8UAA8U,CAAC;IACjV,IACE,CAAC,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,gBAAsB,IAAI,IAAI,EAAE;IAC7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,KAAK,EAAE,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5C,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAC5D,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACxB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACxB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,gBAAsB,IAAI,IAAI,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE1E,OAAO,CACL,gBAAgB,CAAC,OAAO,CAAC;QACzB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC;QACzC,YAAY,CAAC,OAAO,CAAC;QACrB,kBAAkB,CAAC,OAAO,CAAC;QAC3B,cAAc,CAAC,OAAO,CAAC;QACvB,eAAe,CAAC,OAAO,CAAC;QACxB,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CACrD,CAAC;AACJ,CAAC"}
|
package/dist/passport.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const passport_1 = __importDefault(require("passport"));
|
|
7
|
+
const passport_jwt_1 = require("passport-jwt");
|
|
8
|
+
const userService_1 = require("./services/userService"); // Adjust the import path as needed
|
|
9
|
+
// JWT options โ these should be configured via environment variables.
|
|
10
|
+
const jwtOptions = {
|
|
11
|
+
jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
|
|
12
|
+
secretOrKey: process.env.JWT_SECRET || 'default_secret', // Replace with a strong secret in production
|
|
13
|
+
passReqToCallback: true,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Verify callback for the JWT strategy.
|
|
17
|
+
* It receives the JWT payload and should return the corresponding user object.
|
|
18
|
+
*/
|
|
19
|
+
const verifyJwt = async (req, payload, done) => {
|
|
20
|
+
try {
|
|
21
|
+
// Assuming the payload contains a `sub` (subject) field with the user ID.
|
|
22
|
+
const user = await (0, userService_1.getUserById)(payload.sub);
|
|
23
|
+
if (!user) {
|
|
24
|
+
return done(null, false);
|
|
25
|
+
}
|
|
26
|
+
return done(null, user);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return done(error, false);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
// Register the JWT strategy with Passport.
|
|
33
|
+
passport_1.default.use(new passport_jwt_1.Strategy(jwtOptions, verifyJwt));
|
|
34
|
+
exports.default = passport_1.default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication Routes
|
|
4
|
+
*
|
|
5
|
+
* Exposes endpoints for user login and token issuance. This
|
|
6
|
+
* example uses a hardโcoded user for demonstration purposes.
|
|
7
|
+
*
|
|
8
|
+
* @module routes/auth
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const express_1 = require("express");
|
|
15
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
16
|
+
const jwt_1 = require("../config/jwt");
|
|
17
|
+
const router = (0, express_1.Router)();
|
|
18
|
+
/**
|
|
19
|
+
* POST /auth/login
|
|
20
|
+
*
|
|
21
|
+
* Accepts a JSON body with `username` and `password`. In a real
|
|
22
|
+
* application this would validate against a database. Here we
|
|
23
|
+
* simply issue a token for a single demo user.
|
|
24
|
+
*/
|
|
25
|
+
router.post('/login', (req, res) => {
|
|
26
|
+
const { username, password } = req.body;
|
|
27
|
+
// Basic validation
|
|
28
|
+
if (typeof username !== 'string' || typeof password !== 'string') {
|
|
29
|
+
return res.status(400).json({ error: 'Username and password required' });
|
|
30
|
+
}
|
|
31
|
+
// Demo credentials check
|
|
32
|
+
if (username !== 'admin' || password !== 'password') {
|
|
33
|
+
return res.status(401).json({ error: 'Invalid credentials' });
|
|
34
|
+
}
|
|
35
|
+
const payload = { sub: username, role: 'admin' };
|
|
36
|
+
const token = jsonwebtoken_1.default.sign(payload, jwt_1.jwtConfig.secret, {
|
|
37
|
+
expiresIn: jwt_1.jwtConfig.expiresIn,
|
|
38
|
+
algorithm: jwt_1.jwtConfig.algorithm,
|
|
39
|
+
});
|
|
40
|
+
res.json({ token });
|
|
41
|
+
});
|
|
42
|
+
exports.default = router;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const auth_1 = require("../middleware/auth");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
/**
|
|
7
|
+
* GET /api/user/profile
|
|
8
|
+
* Returns the profile of the currently authenticated user.
|
|
9
|
+
* This route is protected by the `ensureAuthenticated` middleware.
|
|
10
|
+
*/
|
|
11
|
+
router.get('/profile', auth_1.ensureAuthenticated, async (req, res, _next) => {
|
|
12
|
+
// Assuming the user information is attached to req.user by Passport
|
|
13
|
+
const user = req.user;
|
|
14
|
+
if (!user) {
|
|
15
|
+
return res.status(404).json({ error: 'User not found' });
|
|
16
|
+
}
|
|
17
|
+
res.json({
|
|
18
|
+
id: user.id,
|
|
19
|
+
username: user.username,
|
|
20
|
+
email: user.email,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* GET /api/user/settings
|
|
25
|
+
* Example of another protected endpoint.
|
|
26
|
+
*/
|
|
27
|
+
router.get('/settings', auth_1.ensureAuthenticated, async (_req, res, _next) => {
|
|
28
|
+
// Placeholder response โ replace with real settings logic
|
|
29
|
+
res.json({ theme: 'dark', notificationsEnabled: true });
|
|
30
|
+
});
|
|
31
|
+
exports.default = router;
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Server Bootstrap
|
|
4
|
+
*
|
|
5
|
+
* Starts the Express server on the configured port.
|
|
6
|
+
*
|
|
7
|
+
* @module server
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const app_1 = __importDefault(require("./app"));
|
|
14
|
+
const PORT = process.env.PORT ?? 3000;
|
|
15
|
+
app_1.default.listen(PORT, () => {
|
|
16
|
+
console.log(`Server running on port ${PORT}`);
|
|
17
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-tool.d.ts","sourceRoot":"","sources":["../../src/tools/pipeline-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gEAAgE;IAChE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,GAAG,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"pipeline-tool.d.ts","sourceRoot":"","sources":["../../src/tools/pipeline-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gEAAgE;IAChE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,GAAG,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAYxE;AA0BD;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
|
|
@@ -58,6 +58,19 @@ export async function runPipelineTool(goal, configManager, opts) {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
// When the caller did NOT pin a provider/model, hand the decision to the
|
|
62
|
+
// AutoModelRouter โ the product's core routing USP. Without this, an
|
|
63
|
+
// unpinned pipeline ran on the single configured default provider, so a
|
|
64
|
+
// rate-limited provider (Groq's free-tier TPM is shared across ALL its
|
|
65
|
+
// models โ switching models within Groq can never escape it) became a
|
|
66
|
+
// 429 death spiral instead of failing over to the configured alternatives
|
|
67
|
+
// (observed live: trace-1788970301803-8302u5 โ 14 steps / 112s of 429s on
|
|
68
|
+
// gpt-oss-120b/gpt-oss-20b while Gemini + OpenRouter sat unused).
|
|
69
|
+
// Auto-routing scores ALL configured providers per task (bandit + ML +
|
|
70
|
+
// model-first + quota-parking), sinks away from session-failed providers,
|
|
71
|
+
// and records real routing snapshots in the reasoning trace. An explicit
|
|
72
|
+
// provider/model still wins (matches the orchestrator's own rule).
|
|
73
|
+
const autoRoute = !provider && !model;
|
|
61
74
|
// E3a + Session 20: intent transparency + D1 recall parity โ parse ONCE,
|
|
62
75
|
// resolve the REQUEST CONTRACT (understanding-first), seed the ๐ง card +
|
|
63
76
|
// router task-intent hint. The contract's acceptance criteria are passed to
|
|
@@ -101,6 +114,7 @@ export async function runPipelineTool(goal, configManager, opts) {
|
|
|
101
114
|
const result = await orchestrator.execute(goal, {
|
|
102
115
|
provider,
|
|
103
116
|
model,
|
|
117
|
+
autoRouteModels: autoRoute,
|
|
104
118
|
verbose: false,
|
|
105
119
|
...(liveBoard ? { spinner: liveBoard } : {}),
|
|
106
120
|
taskIntentHint: opts.taskIntentHint ?? dispatch.taskIntentHint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-tool.js","sourceRoot":"","sources":["../../src/tools/pipeline-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,YAAY,EAA4B,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyCzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,aAAkB,EAClB,IAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IACnC,0EAA0E;IAC1E,wEAAwE;IACxE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC,MAAM,+GAA+G,CAAC;IAClK,CAAC;IACD,qEAAqE;IACrE,2CAA2C;IAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC,OAAO,CACtC,MAAM,EACN,IAAI,EACJ,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EACxC,aAAa,CACd,CAAC;YACF,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnE,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;YACzB,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,6DAA6D;gBACtE,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-tool.js","sourceRoot":"","sources":["../../src/tools/pipeline-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,21 @@
|
|
|
10
10
|
* `vX.Y.Z ยท N tests` badge, `docs/COMMANDS.md` carries a `nuvira vX.Y.x`
|
|
11
11
|
* header), and NO post-publish diff existed.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* P5a.2 โ AUTO-FIX: detection alone left the fix to a human (or a lucky
|
|
14
|
+
* agent turn). Since every marker is a NARROW, version-bearing regex, the
|
|
15
|
+
* fix is deterministic: rewrite the stale version token, keep everything
|
|
16
|
+
* else byte-identical, then RE-DETECT on the result (a fix that does not
|
|
17
|
+
* verify is reported as failed, never silently claimed). `runReleaseSync`
|
|
18
|
+
* now fixes by default; `reportOnly` opts out. File writes are surgical
|
|
19
|
+
* (target file, matched span only) and failures are best-effort โ a sync
|
|
20
|
+
* failure must never mark the publish failed.
|
|
21
|
+
*
|
|
22
|
+
* Deterministic and pure at the core (`findReleaseDrift` / `fixReleaseDrift`
|
|
23
|
+
* โ fixture-testable): each release-marker pattern is matched and compared
|
|
24
|
+
* against the CURRENT version; a marker that still names an older version is
|
|
25
|
+
* a gap. Historical "Since v1.60.x" notes are deliberately NOT markers โ
|
|
26
|
+
* only the three release-marker patterns below are checked, so nothing
|
|
27
|
+
* false-positives.
|
|
18
28
|
*
|
|
19
29
|
* Best-effort by construction: a missing/unreadable sync target, or an
|
|
20
30
|
* emission failure, never throws โ a sync check failure must never mark the
|
|
@@ -36,23 +46,49 @@ export interface ReleaseDriftGap {
|
|
|
36
46
|
}
|
|
37
47
|
/** The sync targets scanned after a publish (relative to the workspace root). */
|
|
38
48
|
export declare const SYNC_TARGETS: string[];
|
|
49
|
+
/** One deterministic marker edit applied to a target file. */
|
|
50
|
+
export interface ReleaseSyncFix {
|
|
51
|
+
file: string;
|
|
52
|
+
line: number;
|
|
53
|
+
kind: ReleaseDriftGap['kind'];
|
|
54
|
+
found: string;
|
|
55
|
+
expected: string;
|
|
56
|
+
/** True when the re-detection pass confirmed the marker is now current. */
|
|
57
|
+
verified: boolean;
|
|
58
|
+
}
|
|
59
|
+
/** The result of one auto-fix pass over the sync targets. */
|
|
60
|
+
export interface ReleaseSyncResult {
|
|
61
|
+
version: string;
|
|
62
|
+
/** Gaps that were detected (before any fix ran). */
|
|
63
|
+
gaps: ReleaseDriftGap[];
|
|
64
|
+
/** Fixes that were applied (only when auto-fix ran). */
|
|
65
|
+
fixes: ReleaseSyncFix[];
|
|
66
|
+
/** True when every detected gap was fixed AND re-detection is clean. */
|
|
67
|
+
synced: boolean;
|
|
68
|
+
/** Sync targets that could not be read or written (best-effort notes). */
|
|
69
|
+
errors: string[];
|
|
70
|
+
}
|
|
39
71
|
/**
|
|
40
72
|
* Pure drift detector โ the testable core. Scans one file's text for the
|
|
41
73
|
* release-marker patterns and returns every marker whose version does NOT
|
|
42
74
|
* match the current (published) version. Never throws.
|
|
43
|
-
*
|
|
44
|
-
* Markers (deliberately narrow โ historical notes are not markers):
|
|
45
|
-
* 1. `Current release <strong>vX.Y.Z</strong>` โ exact version
|
|
46
|
-
* 2. `vX.Y.Z ยท N tests` (the arch-tier badge) โ exact version
|
|
47
|
-
* 3. `nuvira vX.Y.x` (COMMANDS.md header) โ major.minor only
|
|
48
75
|
*/
|
|
49
76
|
export declare function findReleaseDrift(text: string, file: string, currentVersion: string): ReleaseDriftGap[];
|
|
50
77
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
78
|
+
* P5a.2 โ pure marker patcher. Rewrites ONLY the stale version tokens of the
|
|
79
|
+
* release markers in `text` to `currentVersion`; every other byte is kept.
|
|
80
|
+
* Deterministic: same input + version โ same output. Companion to
|
|
81
|
+
* `findReleaseDrift` (shared marker table), so anything detection would flag,
|
|
82
|
+
* the patcher fixes โ and vice versa.
|
|
83
|
+
*/
|
|
84
|
+
export declare function fixReleaseDrift(text: string, currentVersion: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* P5a.2 โ run the post-publish sync pass with AUTO-FIX. Detects drift,
|
|
87
|
+
* patches every stale marker, re-reads and RE-DETECTS to verify, and emits a
|
|
88
|
+
* structured `release:sync` event. `reportOnly: true` restores the old
|
|
89
|
+
* detect-only behavior. Returns a model-feedable summary โ never throws.
|
|
56
90
|
*/
|
|
57
|
-
export declare function runReleaseSync(currentVersion: string, ctx: ToolContext
|
|
91
|
+
export declare function runReleaseSync(currentVersion: string, ctx: ToolContext, opts?: {
|
|
92
|
+
reportOnly?: boolean;
|
|
93
|
+
}): string;
|
|
58
94
|
//# sourceMappingURL=release-sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-sync.d.ts","sourceRoot":"","sources":["../../src/tools/release-sync.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"release-sync.d.ts","sourceRoot":"","sources":["../../src/tools/release-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;CACrE;AAED,iFAAiF;AACjF,eAAO,MAAM,YAAY,UAA6C,CAAC;AAEvE,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,wDAAwD;IACxD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0CD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,eAAe,EAAE,CA4BtG;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAa5E;AAuBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,WAAW,EAChB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,MAAM,CAsER"}
|