@raindrop-ai/wizard 0.0.1
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/LICENSE +47 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +117 -0
- package/dist/bin.js.map +1 -0
- package/dist/src/docs/browser.md +105 -0
- package/dist/src/docs/python.md +618 -0
- package/dist/src/docs/typescript.md +584 -0
- package/dist/src/docs/vercel-ai-sdk.md +304 -0
- package/dist/src/lib/agent-interface.d.ts +46 -0
- package/dist/src/lib/agent-interface.js +292 -0
- package/dist/src/lib/agent-interface.js.map +1 -0
- package/dist/src/lib/agent-prompts.d.ts +10 -0
- package/dist/src/lib/agent-prompts.js +49 -0
- package/dist/src/lib/agent-prompts.js.map +1 -0
- package/dist/src/lib/config.d.ts +39 -0
- package/dist/src/lib/config.js +549 -0
- package/dist/src/lib/config.js.map +1 -0
- package/dist/src/lib/constants.d.ts +27 -0
- package/dist/src/lib/constants.js +165 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/handlers.d.ts +68 -0
- package/dist/src/lib/handlers.js +420 -0
- package/dist/src/lib/handlers.js.map +1 -0
- package/dist/src/lib/integration-testing.d.ts +44 -0
- package/dist/src/lib/integration-testing.js +123 -0
- package/dist/src/lib/integration-testing.js.map +1 -0
- package/dist/src/lib/mcp.d.ts +14 -0
- package/dist/src/lib/mcp.js +134 -0
- package/dist/src/lib/mcp.js.map +1 -0
- package/dist/src/lib/sdk-messages.d.ts +17 -0
- package/dist/src/lib/sdk-messages.js +278 -0
- package/dist/src/lib/sdk-messages.js.map +1 -0
- package/dist/src/lib/wizard.d.ts +6 -0
- package/dist/src/lib/wizard.js +131 -0
- package/dist/src/lib/wizard.js.map +1 -0
- package/dist/src/run.d.ts +8 -0
- package/dist/src/run.js +53 -0
- package/dist/src/run.js.map +1 -0
- package/dist/src/ui/App.d.ts +15 -0
- package/dist/src/ui/App.js +27 -0
- package/dist/src/ui/App.js.map +1 -0
- package/dist/src/ui/cancellation.d.ts +14 -0
- package/dist/src/ui/cancellation.js +17 -0
- package/dist/src/ui/cancellation.js.map +1 -0
- package/dist/src/ui/components/ClarifyingQuestionsPrompt.d.ts +17 -0
- package/dist/src/ui/components/ClarifyingQuestionsPrompt.js +359 -0
- package/dist/src/ui/components/ClarifyingQuestionsPrompt.js.map +1 -0
- package/dist/src/ui/components/ContinuePrompt.d.ts +14 -0
- package/dist/src/ui/components/ContinuePrompt.js +23 -0
- package/dist/src/ui/components/ContinuePrompt.js.map +1 -0
- package/dist/src/ui/components/DiffDisplay.d.ts +18 -0
- package/dist/src/ui/components/DiffDisplay.js +110 -0
- package/dist/src/ui/components/DiffDisplay.js.map +1 -0
- package/dist/src/ui/components/FeedbackSelectPrompt.d.ts +20 -0
- package/dist/src/ui/components/FeedbackSelectPrompt.js +132 -0
- package/dist/src/ui/components/FeedbackSelectPrompt.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +14 -0
- package/dist/src/ui/components/HistoryItemDisplay.js +140 -0
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
- package/dist/src/ui/components/Logo.d.ts +10 -0
- package/dist/src/ui/components/Logo.js +47 -0
- package/dist/src/ui/components/Logo.js.map +1 -0
- package/dist/src/ui/components/OrgInfoBox.d.ts +11 -0
- package/dist/src/ui/components/OrgInfoBox.js +16 -0
- package/dist/src/ui/components/OrgInfoBox.js.map +1 -0
- package/dist/src/ui/components/PendingPrompt.d.ts +18 -0
- package/dist/src/ui/components/PendingPrompt.js +57 -0
- package/dist/src/ui/components/PendingPrompt.js.map +1 -0
- package/dist/src/ui/components/PersistentTextInput.d.ts +21 -0
- package/dist/src/ui/components/PersistentTextInput.js +117 -0
- package/dist/src/ui/components/PersistentTextInput.js.map +1 -0
- package/dist/src/ui/components/PlanApprovalPrompt.d.ts +19 -0
- package/dist/src/ui/components/PlanApprovalPrompt.js +62 -0
- package/dist/src/ui/components/PlanApprovalPrompt.js.map +1 -0
- package/dist/src/ui/components/PromptContainer.d.ts +14 -0
- package/dist/src/ui/components/PromptContainer.js +18 -0
- package/dist/src/ui/components/PromptContainer.js.map +1 -0
- package/dist/src/ui/components/SelectPrompt.d.ts +14 -0
- package/dist/src/ui/components/SelectPrompt.js +62 -0
- package/dist/src/ui/components/SelectPrompt.js.map +1 -0
- package/dist/src/ui/components/SpinnerDisplay.d.ts +13 -0
- package/dist/src/ui/components/SpinnerDisplay.js +11 -0
- package/dist/src/ui/components/SpinnerDisplay.js.map +1 -0
- package/dist/src/ui/components/ToolApprovalPrompt.d.ts +14 -0
- package/dist/src/ui/components/ToolApprovalPrompt.js +142 -0
- package/dist/src/ui/components/ToolApprovalPrompt.js.map +1 -0
- package/dist/src/ui/components/ToolCallDisplay.d.ts +14 -0
- package/dist/src/ui/components/ToolCallDisplay.js +83 -0
- package/dist/src/ui/components/ToolCallDisplay.js.map +1 -0
- package/dist/src/ui/components/WriteKeyDisplay.d.ts +15 -0
- package/dist/src/ui/components/WriteKeyDisplay.js +13 -0
- package/dist/src/ui/components/WriteKeyDisplay.js.map +1 -0
- package/dist/src/ui/contexts/WizardContext.d.ts +210 -0
- package/dist/src/ui/contexts/WizardContext.js +362 -0
- package/dist/src/ui/contexts/WizardContext.js.map +1 -0
- package/dist/src/ui/hooks/useCancellation.d.ts +15 -0
- package/dist/src/ui/hooks/useCancellation.js +25 -0
- package/dist/src/ui/hooks/useCancellation.js.map +1 -0
- package/dist/src/ui/render.d.ts +34 -0
- package/dist/src/ui/render.js +94 -0
- package/dist/src/ui/render.js.map +1 -0
- package/dist/src/ui/types.d.ts +184 -0
- package/dist/src/ui/types.js +6 -0
- package/dist/src/ui/types.js.map +1 -0
- package/dist/src/utils/clack-utils.d.ts +13 -0
- package/dist/src/utils/clack-utils.js +131 -0
- package/dist/src/utils/clack-utils.js.map +1 -0
- package/dist/src/utils/debug.d.ts +13 -0
- package/dist/src/utils/debug.js +47 -0
- package/dist/src/utils/debug.js.map +1 -0
- package/dist/src/utils/environment.d.ts +5 -0
- package/dist/src/utils/environment.js +131 -0
- package/dist/src/utils/environment.js.map +1 -0
- package/dist/src/utils/logging.d.ts +9 -0
- package/dist/src/utils/logging.js +38 -0
- package/dist/src/utils/logging.js.map +1 -0
- package/dist/src/utils/oauth.d.ts +12 -0
- package/dist/src/utils/oauth.js +497 -0
- package/dist/src/utils/oauth.js.map +1 -0
- package/dist/src/utils/package-json-types.d.ts +44 -0
- package/dist/src/utils/package-json-types.js +6 -0
- package/dist/src/utils/package-json-types.js.map +1 -0
- package/dist/src/utils/package-json.d.ts +19 -0
- package/dist/src/utils/package-json.js +22 -0
- package/dist/src/utils/package-json.js.map +1 -0
- package/dist/src/utils/session.d.ts +2 -0
- package/dist/src/utils/session.js +87 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/types.d.ts +61 -0
- package/dist/src/utils/types.js +2 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/src/utils/ui.d.ts +120 -0
- package/dist/src/utils/ui.js +164 -0
- package/dist/src/utils/ui.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-interface.js","sourceRoot":"","sources":["../../../src/lib/agent-interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEhC,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEvD,kDAAkD;AAClD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;GAGG;AACH,SAAS,2BAA2B;IAClC,mFAAmF;IACnF,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAyBD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,OAAsB;IAEtB,mCAAmC;IACnC,WAAW,EAAE,CAAC;IACd,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC3C,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,MAAM,CAAC;QAC5D,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,4BAA4B,CAAC;QAEtE,MAAM,cAAc,GAAmB;YACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,KAAK,EAAE,MAAM;SACd,CAAC;QAEF,SAAS,CAAC,eAAe,EAAE;YACzB,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;SAClD,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,eAAe,EAAE;gBACrB,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;aAClD,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,OAAO,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,+CAA+C,aAAa,EAAE;SACrE,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,OAAO,CAAC;YACT,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,+BAAgC,KAAe,CAAC,OAAO,EAAE;SAChE,CAAC,CAAC;QACH,SAAS,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAChD,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAA2B,EAC3B,MAAc,EACd,OAAsB,EACtB,MAAuB;IAEvB,MAAM,EACJ,cAAc,GAAG,+BAA+B,EAChD,cAAc,GAAG,+BAA+B,EAChD,MAAM,EACN,WAAW,GACZ,GAAG,MAAM,IAAK,EAAqB,CAAC;IAErC,0DAA0D;IAC1D,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,2BAA2B,EAAE,CAAC;IAC9C,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAChC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAE9C,wBAAwB;IACxB,IAAI,aAAa,GAAG,MAAM,CAAC;IAC3B,IAAI,gBAAgB,GAAuB,MAAM,CAAC;IAClD,IAAI,MAAwB,CAAC;IAE7B,4DAA4D;IAC5D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAE7B,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpC,IAAI,gBAAgB,EAAE,CAAC;YACrB,SAAS,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QACnD,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAuB,gBAAgB,CAAC;QACrD,IAAI,WAAW,GAAQ,IAAI,CAAC;QAE5B,mCAAmC;QACnC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;QAE5D,8CAA8C;QAC9C,MAAM,mBAAmB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,iBAAiB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC3C,MAAM,sBAAsB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChD,MAAM,qBAAqB,GAAG,EAAE,KAAK,EAAE,IAAqB,EAAE,CAAC;QAC/D,MAAM,gBAAgB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAE1C,6DAA6D;QAC7D,IAAI,kBAAkB,GAAuC,IAAI,CAAC;QAElE,sDAAsD;QACtD,MAAM,GAAG,sBAAsB,CAAC;YAC9B,iBAAiB;YACjB,sBAAsB;YACtB,gBAAgB;YAChB,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW;SAClC,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,mBAAmB,GAAG,yBAAyB,CACnD,mBAAmB,EACnB;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW;YACX,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YAC1B,UAAU,EAAE,WAAW,CAAC,gBAAgB;SACzC,CACF,CAAC;QAEF,wCAAwC;QACxC,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAE,EAAE;YACjD,mDAAmD;YACnD,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;YAE/B,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC5B,sEAAsE;gBACtE,SAAS,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC;gBAC9D,qBAAqB,CAAC,KAAK,GAAG,OAAO,CAAC;gBACtC,IAAI,kBAAkB,EAAE,CAAC;oBACvB,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC5B,kBAAkB,GAAG,IAAI,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,qBAAqB,CAAC,KAAK,GAAG,OAAO,CAAC;gBACtC,SAAS,CACP,mEAAmE,CACpE,CAAC;gBACF,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;YACrC,SAAS,CAAC,gCAAgC,CAAC,CAAC;YAC5C,4DAA4D;YAC5D,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;YACjC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAEjC,mEAAmE;YACnE,IACE,CAAC,iBAAiB,CAAC,KAAK,IAAI,sBAAsB,CAAC,KAAK,CAAC;gBACzD,gBAAgB,CAAC,KAAK,EACtB,CAAC;gBACD,SAAS,CAAC,yBAAyB,CAAC,CAAC;gBACrC,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACzB,EAAE,CAAC,IAAI,EAAE,CAAC;gBACV,kDAAkD;gBAClD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAED,2EAA2E;YAC3E,IAAI,iBAAiB,CAAC,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,CAAC;gBAC5D,SAAS,CAAC,oDAAoD,CAAC,CAAC;gBAChE,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;gBAE9B,mDAAmD;gBACnD,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACzB,EAAE,CAAC,oBAAoB,CAAC;oBACtB,QAAQ,EAAE,sBAAsB;oBAChC,WAAW,EAAE,yBAAyB;oBACtC,OAAO,EAAE,qBAAqB;oBAC9B,WAAW,EAAE,4BAA4B;iBAC1C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,kDAAkD;YAClD,SAAS,CAAC,qCAAqC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,EAAE,CAAC,oBAAoB,CAAC;YACtB,QAAQ,EAAE,sBAAsB;YAChC,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,WAAW,GAAgB;YAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW;YACX,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;SAC3B,CAAC;QAEF,WAAW,GAAG,KAAK,CAAC;YAClB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,GAAG,EAAE,WAAW,CAAC,gBAAgB;gBACjC,cAAc,EAAE,SAAS;gBACzB,UAAU,EAAE;oBACV,iBAAiB,EAAE,mBAAmB;iBACvC;gBACD,YAAY,EAAE,wBAAwB;gBACtC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;gBACvB,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,uBAAuB,CAAC,WAAW,EAAE,kBAAkB,CAAC;gBACpE,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBACvB,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBAClB,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;aACF;SACF,CAAC,CAAC;QAEH,qBAAqB;QACrB,EAAE,CAAC,aAAa,CAAC;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YACxC,uDAAuD;YACvD,4EAA4E;YAC5E,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC5B,SAAS,CACP,qEAAqE,CACtE,CAAC;gBACF,oEAAoE;gBACpE,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;oBAC/B,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACR,CAAC;YAED,sCAAsC;YACtC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;gBAC/B,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAClC,CAAC;YAED,iBAAiB,CACf,OAAO,EACP,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,iBAAiB,CAAC,KAAK,CACxB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,SAAS,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,SAAS,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;QACjD,SAAS,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3D,kGAAkG;QAClG,MAAM,cAAc,GAClB,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,SAAS,CAAC;QAC3E,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,IAAI,SAAS,CAAC;QAEjE,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,cAAc,EAAE,CAAC;gBACnB,SAAS,CACP,uFAAuF,CACxF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,sDAAsD,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvC,iFAAiF;YACjF,IAAI,WAAmB,CAAC;YAExB,IAAI,qBAAqB,CAAC,KAAK,EAAE,CAAC;gBAChC,2DAA2D;gBAC3D,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;gBAC1C,qBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,2BAA2B;gBAC/D,SAAS,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,SAAS,CAAC,4DAA4D,CAAC,CAAC;gBAExE,oFAAoF;gBAEpF,WAAW,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;oBAClD,kBAAkB,GAAG,OAAO,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,mDAAmD;gBACnD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,SAAS,CAAC,sCAAsC,CAAC,CAAC;oBAClD,EAAE,CAAC,mBAAmB,EAAE,CAAC;oBACzB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBAED,SAAS,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAC;YACzE,CAAC;YAED,0BAA0B;YAC1B,EAAE,CAAC,OAAO,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YAEH,kCAAkC;YAClC,SAAS,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;YAC5D,aAAa,GAAG,WAAW,CAAC;YAC5B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,EAAE,CAAC,mBAAmB,EAAE,CAAC;QACzB,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC","sourcesContent":["/**\n * Shared agent interface for wizards\n * Uses Claude Agent SDK directly with streaming input support\n */\n\nimport path from 'path';\nimport { createRequire } from 'module';\nimport ui from '../utils/ui.js';\nimport type { AgentQueryHandle } from '../ui/types.js';\nimport {\n debug,\n logToFile,\n initLogFile,\n LOG_FILE_PATH,\n} from '../utils/debug.js';\nimport {\n createCanUseToolHandler,\n createAgentQueryHandle,\n type PendingToolCall,\n type SessionInfo,\n} from './handlers.js';\nimport { processSDKMessage } from './sdk-messages.js';\nimport { createCompletionMcpServer } from './mcp.js';\nimport type { WizardOptions } from '../utils/types.js';\nimport { query } from '@anthropic-ai/claude-agent-sdk';\n\n// Create a require function for ESM compatibility\nconst require = createRequire(import.meta.url);\n\n/**\n * Get the path to the bundled Claude Code CLI from the SDK package.\n * This ensures we use the SDK's bundled version rather than the user's installed Claude Code.\n */\nfunction getClaudeCodeExecutablePath(): string {\n // require.resolve finds the package's main entry, then we get cli.js from same dir\n const sdkPackagePath = require.resolve('@anthropic-ai/claude-agent-sdk');\n return path.join(path.dirname(sdkPackagePath), 'cli.js');\n}\n\n// Re-export AgentQueryHandle for external use\nexport type { AgentQueryHandle };\n\nexport type AgentConfig = {\n workingDirectory: string;\n};\n\n/**\n * Result from runAgentLoop including session ID and query handle\n */\nexport interface AgentRunResult {\n sessionId?: string;\n handle: AgentQueryHandle;\n}\n\n/**\n * Internal configuration object returned by initializeAgent\n */\nexport type AgentRunConfig = {\n workingDirectory: string;\n model: string;\n};\n\n/**\n * Initialize agent configuration for the Claude agent\n */\nexport function initializeAgent(\n config: AgentConfig,\n options: WizardOptions,\n): AgentRunConfig {\n // Initialize log file for this run\n initLogFile();\n logToFile('Agent initialization starting');\n logToFile('Install directory:', options.installDir);\n\n try {\n process.env.CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS = 'true';\n // Set default subagent model to Sonnet\n process.env.CLAUDE_CODE_SUBAGENT_MODEL = 'claude-sonnet-4-5-20250929';\n\n const agentRunConfig: AgentRunConfig = {\n workingDirectory: config.workingDirectory,\n model: 'opus',\n };\n\n logToFile('Agent config:', {\n workingDirectory: agentRunConfig.workingDirectory,\n });\n\n if (options.debug) {\n debug('Agent config:', {\n workingDirectory: agentRunConfig.workingDirectory,\n });\n }\n\n ui.addItem({\n type: 'step',\n text: `I'll keep verbose logs for this session at: ${LOG_FILE_PATH}`,\n });\n return agentRunConfig;\n } catch (error) {\n ui.addItem({\n type: 'error',\n text: `Failed to initialize agent: ${(error as Error).message}`,\n });\n logToFile('Agent initialization error:', error);\n debug('Agent initialization error:', error);\n throw error;\n }\n}\n\n/**\n * Configuration for runAgentLoop\n */\nexport interface RunAgentConfig {\n spinnerMessage?: string;\n successMessage?: string;\n resume?: string;\n accessToken: string;\n orgId: string;\n}\n\n/**\n * Execute an agent with the provided prompt and options.\n * Supports streaming input for user interruption and follow-up messages.\n * Uses a while loop to handle user interactions instead of recursion.\n *\n * @returns Session ID and query handle for controlling the agent\n */\nexport async function runAgentLoop(\n agentConfig: AgentRunConfig,\n prompt: string,\n options: WizardOptions,\n config?: RunAgentConfig,\n): Promise<AgentRunResult> {\n const {\n spinnerMessage = 'Raindrop wizard is working...',\n successMessage = 'Raindrop integration complete',\n resume,\n accessToken,\n } = config ?? ({} as RunAgentConfig);\n\n // Add header to indicate start of interactive agent phase\n ui.addItem({ type: 'phase', text: '─── Agent ───' });\n\n const cliPath = getClaudeCodeExecutablePath();\n logToFile('Starting agent run');\n logToFile('Claude Code executable:', cliPath);\n\n // Loop-persistent state\n let currentPrompt = prompt;\n let currentSessionId: string | undefined = resume;\n let handle: AgentQueryHandle;\n\n // Cache for approved files (persists across all iterations)\n const approvedFilesCache = new Set<string>();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const spinner = ui.spinner();\n\n logToFile('Prompt:', currentPrompt);\n if (currentSessionId) {\n logToFile('Resuming session:', currentSessionId);\n }\n\n // Timing and session state\n const startTime = Date.now();\n let sessionId: string | undefined = currentSessionId;\n let queryObject: any = null;\n\n // Message and tool call collectors\n const collectedText: string[] = [];\n const pendingToolCalls = new Map<string, PendingToolCall>();\n\n // Shared ref objects for cross-boundary state\n const hasCompletedWorkRef = { value: false };\n const isInterruptingRef = { value: false };\n const waitingForUserInputRef = { value: false };\n const pendingUserMessageRef = { value: null as string | null };\n const exitHintShownRef = { value: false };\n\n // Promise resolver for waiting on user input after interrupt\n let resolveUserMessage: ((message: string) => void) | null = null;\n\n // Query handle for external control (interrupt, etc.)\n handle = createAgentQueryHandle({\n isInterruptingRef,\n waitingForUserInputRef,\n pendingToolCalls,\n getQueryObject: () => queryObject,\n });\n\n // Create MCP server with CompleteIntegration tool\n const completionMcpServer = createCompletionMcpServer(\n hasCompletedWorkRef,\n {\n sessionId: options.sessionId,\n accessToken,\n orgId: config?.orgId ?? '',\n installDir: agentConfig.workingDirectory,\n },\n );\n\n // Define callbacks for persistent input\n const handlePersistentSubmit = (message: string) => {\n // Reset exit hint flag when user submits a message\n exitHintShownRef.value = false;\n\n if (isInterruptingRef.value) {\n // Already interrupted - resolve the waiting promise with this message\n logToFile('User submitted message after interrupt:', message);\n pendingUserMessageRef.value = message;\n if (resolveUserMessage) {\n resolveUserMessage(message);\n resolveUserMessage = null;\n }\n } else {\n // Not yet interrupted - store message and trigger interrupt\n pendingUserMessageRef.value = message;\n logToFile(\n 'User submitted message while agent running - triggering interrupt',\n );\n void handle.interrupt();\n }\n };\n\n const handlePersistentInterrupt = () => {\n logToFile('User requested interrupt (Esc)');\n // Stop spinner immediately - persistent input stays visible\n spinner.stop();\n void handle.interrupt();\n };\n\n const handlePersistentCtrlC = () => {\n logToFile('User pressed Ctrl+C');\n\n // If already interrupted and exit hint was shown, exit immediately\n if (\n (isInterruptingRef.value || waitingForUserInputRef.value) &&\n exitHintShownRef.value\n ) {\n logToFile('Second Ctrl+C - exiting');\n ui.stopPersistentInput();\n ui.exit();\n // Small delay to allow UI to clean up before exit\n setTimeout(() => process.exit(130), 100);\n return;\n }\n\n // If already interrupted but hint not shown yet, show hint and clear input\n if (isInterruptingRef.value || waitingForUserInputRef.value) {\n logToFile('First Ctrl+C while interrupted - showing exit hint');\n exitHintShownRef.value = true;\n\n // Clear the input and update placeholder with hint\n ui.stopPersistentInput();\n ui.startPersistentInput({\n onSubmit: handlePersistentSubmit,\n onInterrupt: handlePersistentInterrupt,\n onCtrlC: handlePersistentCtrlC,\n placeholder: 'Press Ctrl+C again to exit',\n });\n return;\n }\n\n // Not interrupted yet - treat as normal interrupt\n logToFile('First Ctrl+C - triggering interrupt');\n spinner.stop();\n void handle.interrupt();\n };\n\n spinner.start(spinnerMessage);\n ui.startPersistentInput({\n onSubmit: handlePersistentSubmit,\n onInterrupt: handlePersistentInterrupt,\n onCtrlC: handlePersistentCtrlC,\n });\n\n // Session info for notifications\n const sessionInfo: SessionInfo = {\n sessionId: options.sessionId,\n accessToken,\n orgId: config?.orgId ?? '',\n };\n\n queryObject = query({\n prompt: currentPrompt,\n options: {\n model: agentConfig.model,\n cwd: agentConfig.workingDirectory,\n permissionMode: 'default',\n mcpServers: {\n 'raindrop-wizard': completionMcpServer,\n },\n systemPrompt: '{WIZARD_SYSTEM_PROMPT}',\n env: { ...process.env },\n resume: currentSessionId,\n canUseTool: createCanUseToolHandler(sessionInfo, approvedFilesCache),\n stderr: (data: string) => {\n logToFile('CLI stderr:', data);\n if (options.debug) {\n debug('CLI stderr:', data);\n }\n },\n },\n });\n\n // Update agent state\n ui.setAgentState({\n isRunning: true,\n queryHandle: handle,\n });\n\n // Process the query stream\n for await (const message of queryObject) {\n // FIX: Check interrupt flag at start of each iteration\n // This handles the case where interrupt() was called before SDK initialized\n if (isInterruptingRef.value) {\n logToFile(\n 'Breaking out of for-await loop - interrupt flag set before SDK init',\n );\n // Capture session_id from init message if available before breaking\n if (message.session_id && !sessionId) {\n sessionId = message.session_id;\n ui.setAgentState({ sessionId });\n }\n break;\n }\n\n // Capture session_id from any message\n if (message.session_id && !sessionId) {\n sessionId = message.session_id;\n ui.setAgentState({ sessionId });\n }\n\n processSDKMessage(\n message,\n options,\n collectedText,\n pendingToolCalls,\n isInterruptingRef.value,\n );\n }\n\n const durationMs = Date.now() - startTime;\n logToFile(`Agent run completed in ${Math.round(durationMs / 1000)}s`);\n logToFile('Session ID for resuming:', sessionId);\n logToFile('Completion status:', hasCompletedWorkRef.value);\n\n // Check if we need user input to continue (either stream ended without completion or interrupted)\n const needsUserInput =\n !hasCompletedWorkRef.value && !waitingForUserInputRef.value && sessionId;\n const wasInterrupted = waitingForUserInputRef.value && sessionId;\n\n if (needsUserInput || wasInterrupted) {\n if (needsUserInput) {\n logToFile(\n 'Stream ended but agent has not called CompleteIntegration - waiting for user response',\n );\n } else {\n logToFile('Stream ended after interrupt, waiting for user input');\n }\n\n spinner.stop();\n ui.setAgentState({ isRunning: false });\n\n // Get the resume message - either from pending submit or wait for user to submit\n let userMessage: string;\n\n if (pendingUserMessageRef.value) {\n // Message was submitted during execution - use it directly\n userMessage = pendingUserMessageRef.value;\n pendingUserMessageRef.value = null; // Clear for next iteration\n logToFile('Using pending user message:', userMessage);\n } else {\n // No pending message - wait for user to submit via persistent input\n logToFile('Waiting for user to submit message via persistent input...');\n\n // Persistent input is already visible, spinner already stopped - just wait for user\n\n userMessage = await new Promise<string>((resolve) => {\n resolveUserMessage = resolve;\n });\n\n // Check if user cancelled (empty message from Esc)\n if (!userMessage) {\n logToFile('User cancelled input, ending session');\n ui.stopPersistentInput();\n return { sessionId, handle };\n }\n\n logToFile('Received user message from persistent input:', userMessage);\n }\n\n // Show user message in UI\n ui.addItem({\n type: 'user-message',\n text: userMessage,\n });\n\n // Update state for next iteration\n logToFile('Resuming agent with user message:', userMessage);\n currentPrompt = userMessage;\n currentSessionId = sessionId;\n continue;\n }\n\n // Normal completion - clean up and return\n ui.stopPersistentInput();\n ui.setAgentState({ isRunning: false });\n spinner.stop(successMessage);\n return { sessionId, handle };\n }\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent prompt templates for Raindrop integration wizard
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Build test feedback message for agent
|
|
6
|
+
*/
|
|
7
|
+
export function buildTestFeedbackMessage(events, userFeedback) {
|
|
8
|
+
return `# Integration Test Results
|
|
9
|
+
|
|
10
|
+
## Events Collected
|
|
11
|
+
|
|
12
|
+
${formatEventSummary(events)}
|
|
13
|
+
|
|
14
|
+
## User Feedback
|
|
15
|
+
|
|
16
|
+
"${userFeedback}"
|
|
17
|
+
|
|
18
|
+
## Your Task
|
|
19
|
+
|
|
20
|
+
Analyze the events and user feedback, then fix the code to address any issues:
|
|
21
|
+
1. Review the event data structure and user's comments
|
|
22
|
+
2. Identify what's missing or incorrect
|
|
23
|
+
3. Update the integration code to fix the problems
|
|
24
|
+
4. Verify the build still succeeds after your fixes
|
|
25
|
+
5. Call CompleteIntegration when done. Do not announce that you are calling the tool.`;
|
|
26
|
+
}
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Helper Functions
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Format event summary for test feedback
|
|
32
|
+
*/
|
|
33
|
+
function formatEventSummary(events) {
|
|
34
|
+
if (events.length === 0) {
|
|
35
|
+
return 'No events received.';
|
|
36
|
+
}
|
|
37
|
+
return events
|
|
38
|
+
.map((event, idx) => {
|
|
39
|
+
const format = event.data.format === 'otel' ? 'OTEL' : 'JSON';
|
|
40
|
+
const spanCount = event.data.spans?.length || 0;
|
|
41
|
+
const aiAttrs = event.data.aiAttributes || event.data;
|
|
42
|
+
return `Event #${idx + 1} at ${event.url}:
|
|
43
|
+
Format: ${format}
|
|
44
|
+
${spanCount > 0 ? `Spans: ${spanCount}` : ''}
|
|
45
|
+
Data: ${JSON.stringify(aiAttrs, null, 2)}`;
|
|
46
|
+
})
|
|
47
|
+
.join('\n\n');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=agent-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-prompts.js","sourceRoot":"","sources":["../../../src/lib/agent-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAyC,EACzC,YAAoB;IAEpB,OAAO;;;;EAIP,kBAAkB,CAAC,MAAM,CAAC;;;;GAIzB,YAAY;;;;;;;;;sFASuE,CAAC;AACvF,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAyC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC;QAEtD,OAAO,UAAU,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG;UACpC,MAAM;EACd,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;QACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC","sourcesContent":["/**\n * Agent prompt templates for Raindrop integration wizard\n */\n\n/**\n * Build test feedback message for agent\n */\nexport function buildTestFeedbackMessage(\n events: Array<{ url: string; data: any }>,\n userFeedback: string,\n): string {\n return `# Integration Test Results\n\n## Events Collected\n\n${formatEventSummary(events)}\n\n## User Feedback\n\n\"${userFeedback}\"\n\n## Your Task\n\nAnalyze the events and user feedback, then fix the code to address any issues:\n1. Review the event data structure and user's comments\n2. Identify what's missing or incorrect\n3. Update the integration code to fix the problems\n4. Verify the build still succeeds after your fixes\n5. Call CompleteIntegration when done. Do not announce that you are calling the tool.`;\n}\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Format event summary for test feedback\n */\nfunction formatEventSummary(events: Array<{ url: string; data: any }>): string {\n if (events.length === 0) {\n return 'No events received.';\n }\n\n return events\n .map((event, idx) => {\n const format = event.data.format === 'otel' ? 'OTEL' : 'JSON';\n const spanCount = event.data.spans?.length || 0;\n const aiAttrs = event.data.aiAttributes || event.data;\n\n return `Event #${idx + 1} at ${event.url}:\nFormat: ${format}\n${spanCount > 0 ? `Spans: ${spanCount}` : ''}\nData: ${JSON.stringify(aiAttrs, null, 2)}`;\n })\n .join('\\n\\n');\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WizardOptions } from '../utils/types.js';
|
|
2
|
+
import { Integration } from './constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Setup detail collected for Slack notification
|
|
5
|
+
*/
|
|
6
|
+
export type SetupDetail = {
|
|
7
|
+
filename: string;
|
|
8
|
+
content: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Collect setup details for Python projects
|
|
12
|
+
*/
|
|
13
|
+
export declare function collectPythonSetupDetails(installDir: string): Promise<SetupDetail[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Collect setup details for TypeScript/Node.js projects
|
|
16
|
+
*/
|
|
17
|
+
export declare function collectTypeScriptSetupDetails(installDir: string): Promise<SetupDetail[]>;
|
|
18
|
+
declare function detectPythonProject(options: Pick<WizardOptions, 'installDir'>): Promise<boolean>;
|
|
19
|
+
declare function detectTypeScriptProject(options: Pick<WizardOptions, 'installDir'>): Promise<boolean>;
|
|
20
|
+
declare function detectVercelAiSdkProject(options: Pick<WizardOptions, 'installDir'>): Promise<boolean>;
|
|
21
|
+
export declare const INTEGRATION_CONFIG: {
|
|
22
|
+
readonly python: {
|
|
23
|
+
readonly detect: typeof detectPythonProject;
|
|
24
|
+
readonly docsUrl: "https://www.raindrop.ai/docs/sdk/python";
|
|
25
|
+
readonly collectSetupDetails: typeof collectPythonSetupDetails;
|
|
26
|
+
};
|
|
27
|
+
readonly typescript: {
|
|
28
|
+
readonly detect: typeof detectTypeScriptProject;
|
|
29
|
+
readonly docsUrl: "https://www.raindrop.ai/docs/sdk/typescript";
|
|
30
|
+
readonly collectSetupDetails: typeof collectTypeScriptSetupDetails;
|
|
31
|
+
};
|
|
32
|
+
readonly "vercel-ai-sdk": {
|
|
33
|
+
readonly detect: typeof detectVercelAiSdkProject;
|
|
34
|
+
readonly docsUrl: "https://www.raindrop.ai/docs/sdk/auto-vercel-ai";
|
|
35
|
+
readonly collectSetupDetails: typeof collectTypeScriptSetupDetails;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export declare const INTEGRATION_ORDER: readonly [Integration.python, Integration.vercelAiSdk, Integration.typescript];
|
|
39
|
+
export {};
|