@ankimcp/anki-mcp-server 0.18.5 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -139
- package/bin/ankimcp.js +10 -1
- package/dist/app-config.service.d.ts +20 -0
- package/dist/app-config.service.js +73 -0
- package/dist/app-config.service.js.map +1 -0
- package/dist/app.module.d.ts +4 -2
- package/dist/app.module.js +99 -11
- package/dist/app.module.js.map +1 -1
- package/dist/bootstrap.d.ts +6 -1
- package/dist/bootstrap.js +7 -2
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/__tests__/cli-output.manual.d.ts +2 -0
- package/dist/cli/__tests__/cli-output.manual.js +14 -0
- package/dist/cli/__tests__/cli-output.manual.js.map +1 -0
- package/dist/cli/args.d.ts +16 -0
- package/dist/{cli.js → cli/args.js} +42 -9
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/cli-output.d.ts +17 -0
- package/dist/cli/cli-output.js +60 -0
- package/dist/cli/cli-output.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +20 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/spinner.d.ts +1 -0
- package/dist/cli/spinner.js +16 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/config/config.factory.d.ts +13 -0
- package/dist/config/config.factory.js +32 -0
- package/dist/config/config.factory.js.map +1 -0
- package/dist/config/config.schema.d.ts +31 -0
- package/dist/config/config.schema.js +54 -0
- package/dist/config/config.schema.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.js +11 -0
- package/dist/config/index.js.map +1 -0
- package/dist/http/guards/origin-validation.guard.d.ts +1 -0
- package/dist/http/guards/origin-validation.guard.js +5 -3
- package/dist/http/guards/origin-validation.guard.js.map +1 -1
- package/dist/main-http.js +23 -11
- package/dist/main-http.js.map +1 -1
- package/dist/main-stdio.js +10 -9
- package/dist/main-stdio.js.map +1 -1
- package/dist/main-tunnel.d.ts +1 -0
- package/dist/main-tunnel.js +27 -0
- package/dist/main-tunnel.js.map +1 -0
- package/dist/mcp/clients/anki-connect.client.js +3 -3
- package/dist/mcp/clients/anki-connect.client.js.map +1 -1
- package/dist/mcp/primitives/essential/index.d.ts +1 -0
- package/dist/mcp/primitives/essential/index.js +8 -1
- package/dist/mcp/primitives/essential/index.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +2 -3
- package/dist/mcp/primitives/essential/tools/add-note.tool.js +2 -9
- package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js +2 -23
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-tags.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/change-deck.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +2 -12
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/create-model.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js +3 -7
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -3
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-tags.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +2 -7
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/model-names.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +2 -3
- package/dist/mcp/primitives/essential/tools/present-card.tool.js +2 -5
- package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js +2 -5
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +2 -8
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/sync.tool.js +2 -4
- package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -3
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +2 -6
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +1 -2
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +2 -5
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/index.d.ts +1 -0
- package/dist/mcp/primitives/gui/index.js +8 -1
- package/dist/mcp/primitives/gui/index.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +2 -5
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +1 -2
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +2 -4
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
- package/dist/services/ngrok.service.d.ts +1 -0
- package/dist/services/ngrok.service.js +5 -3
- package/dist/services/ngrok.service.js.map +1 -1
- package/dist/test-fixtures/mock-data.d.ts +8 -0
- package/dist/test-fixtures/mock-data.js +8 -0
- package/dist/test-fixtures/mock-data.js.map +1 -1
- package/dist/tunnel/commands/index.d.ts +3 -0
- package/dist/tunnel/commands/index.js +10 -0
- package/dist/tunnel/commands/index.js.map +1 -0
- package/dist/tunnel/commands/login.command.d.ts +2 -0
- package/dist/tunnel/commands/login.command.js +29 -0
- package/dist/tunnel/commands/login.command.js.map +1 -0
- package/dist/tunnel/commands/logout.command.d.ts +2 -0
- package/dist/tunnel/commands/logout.command.js +25 -0
- package/dist/tunnel/commands/logout.command.js.map +1 -0
- package/dist/tunnel/commands/perform-login.d.ts +9 -0
- package/dist/tunnel/commands/perform-login.js +72 -0
- package/dist/tunnel/commands/perform-login.js.map +1 -0
- package/dist/tunnel/commands/tunnel.command.d.ts +3 -0
- package/dist/tunnel/commands/tunnel.command.js +225 -0
- package/dist/tunnel/commands/tunnel.command.js.map +1 -0
- package/dist/tunnel/credentials.service.d.ts +23 -0
- package/dist/tunnel/credentials.service.js +152 -0
- package/dist/tunnel/credentials.service.js.map +1 -0
- package/dist/tunnel/device-flow.service.d.ts +46 -0
- package/dist/tunnel/device-flow.service.js +230 -0
- package/dist/tunnel/device-flow.service.js.map +1 -0
- package/dist/tunnel/in-memory.transport.d.ts +14 -0
- package/dist/tunnel/in-memory.transport.js +63 -0
- package/dist/tunnel/in-memory.transport.js.map +1 -0
- package/dist/tunnel/index.d.ts +6 -0
- package/dist/tunnel/index.js +31 -0
- package/dist/tunnel/index.js.map +1 -0
- package/dist/tunnel/tunnel-mcp.service.d.ts +15 -0
- package/dist/tunnel/tunnel-mcp.service.js +100 -0
- package/dist/tunnel/tunnel-mcp.service.js.map +1 -0
- package/dist/tunnel/tunnel.client.d.ts +60 -0
- package/dist/tunnel/tunnel.client.js +386 -0
- package/dist/tunnel/tunnel.client.js.map +1 -0
- package/dist/tunnel/tunnel.protocol.d.ts +67 -0
- package/dist/tunnel/tunnel.protocol.js +25 -0
- package/dist/tunnel/tunnel.protocol.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/package.json +31 -22
- package/dist/anki-config.service.d.ts +0 -11
- package/dist/anki-config.service.js +0 -46
- package/dist/anki-config.service.js.map +0 -1
- package/dist/cli.d.ts +0 -10
- package/dist/cli.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -22,12 +22,10 @@ let GuiSelectedNotesTool = GuiSelectedNotesTool_1 = class GuiSelectedNotesTool {
|
|
|
22
22
|
constructor(ankiClient) {
|
|
23
23
|
this.ankiClient = ankiClient;
|
|
24
24
|
}
|
|
25
|
-
async guiSelectedNotes(_args
|
|
25
|
+
async guiSelectedNotes(_args) {
|
|
26
26
|
try {
|
|
27
27
|
this.logger.log("Getting selected notes from Card Browser");
|
|
28
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
29
28
|
const noteIds = await this.ankiClient.invoke("guiSelectedNotes");
|
|
30
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
31
29
|
this.logger.log(`Retrieved ${noteIds.length} selected note(s) from Card Browser`);
|
|
32
30
|
if (noteIds.length === 0) {
|
|
33
31
|
return {
|
|
@@ -86,7 +84,7 @@ __decorate([
|
|
|
86
84
|
},
|
|
87
85
|
}),
|
|
88
86
|
__metadata("design:type", Function),
|
|
89
|
-
__metadata("design:paramtypes", [Object
|
|
87
|
+
__metadata("design:paramtypes", [Object]),
|
|
90
88
|
__metadata("design:returntype", Promise)
|
|
91
89
|
], GuiSelectedNotesTool.prototype, "guiSelectedNotes", null);
|
|
92
90
|
exports.GuiSelectedNotesTool = GuiSelectedNotesTool = GuiSelectedNotesTool_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui-selected-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-selected-notes.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;
|
|
1
|
+
{"version":3,"file":"gui-selected-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-selected-notes.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAMtD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAGF;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEhE,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAwBxD,AAAN,KAAK,CAAC,gBAAgB,CAAC,KAA4B;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAG5D,MAAM,OAAO,GACX,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAW,kBAAkB,CAAC,CAAC;YAE7D,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,aAAa,OAAO,CAAC,MAAM,qCAAqC,CACjE,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,qDAAqD;oBAC9D,IAAI,EAAE,sEAAsE;iBAC7E,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,SAAS,EAAE,OAAO,CAAC,MAAM;gBACzB,OAAO,EAAE,aAAa,OAAO,CAAC,MAAM,wCAAwC;gBAC5E,IAAI,EAAE,iGAAiG;aACxG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YAEzD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAClC,CAAC;oBACD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;wBAChC,IAAI,EAAE,2DAA2D;qBAClE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,IAAI,EAAE,wDAAwD;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3EY,oDAAoB;AA2BzB;IAtBL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,kHAAkH;YAClH,4EAA4E;YAC5E,6EAA6E;YAC7E,oDAAoD;QACtD,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;YAC5B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,oBAAoB;YAC3B,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;4DAgDD;+BA1EU,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,oBAAoB,CA2EhC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { Context } from "@rekog/mcp-nest";
|
|
2
1
|
import { AnkiConnectClient } from "../../../clients/anki-connect.client";
|
|
3
2
|
export declare class GuiShowAnswerTool {
|
|
4
3
|
private readonly ankiClient;
|
|
5
4
|
private readonly logger;
|
|
6
5
|
constructor(ankiClient: AnkiConnectClient);
|
|
7
|
-
guiShowAnswer(_args: Record<string, never
|
|
6
|
+
guiShowAnswer(_args: Record<string, never>): Promise<{
|
|
8
7
|
[x: string]: unknown;
|
|
9
8
|
content: ({
|
|
10
9
|
type: "text";
|
|
@@ -22,12 +22,10 @@ let GuiShowAnswerTool = GuiShowAnswerTool_1 = class GuiShowAnswerTool {
|
|
|
22
22
|
constructor(ankiClient) {
|
|
23
23
|
this.ankiClient = ankiClient;
|
|
24
24
|
}
|
|
25
|
-
async guiShowAnswer(_args
|
|
25
|
+
async guiShowAnswer(_args) {
|
|
26
26
|
try {
|
|
27
27
|
this.logger.log("Showing answer side of current card");
|
|
28
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
29
28
|
const inReview = await this.ankiClient.invoke("guiShowAnswer");
|
|
30
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
31
29
|
if (!inReview) {
|
|
32
30
|
this.logger.warn("Not in review mode");
|
|
33
31
|
return {
|
|
@@ -76,7 +74,7 @@ __decorate([
|
|
|
76
74
|
},
|
|
77
75
|
}),
|
|
78
76
|
__metadata("design:type", Function),
|
|
79
|
-
__metadata("design:paramtypes", [Object
|
|
77
|
+
__metadata("design:paramtypes", [Object]),
|
|
80
78
|
__metadata("design:returntype", Promise)
|
|
81
79
|
], GuiShowAnswerTool.prototype, "guiShowAnswer", null);
|
|
82
80
|
exports.GuiShowAnswerTool = GuiShowAnswerTool = GuiShowAnswerTool_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui-show-answer.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-show-answer.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;
|
|
1
|
+
{"version":3,"file":"gui-show-answer.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-show-answer.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAMtD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAGC;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7D,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAuBxD,AAAN,KAAK,CAAC,aAAa,CAAC,KAA4B;QAC9C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAGvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAU,eAAe,CAAC,CAAC;YAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,6CAA6C;oBACtD,IAAI,EAAE,kDAAkD;iBACzD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAErC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,8BAA8B;gBACvC,IAAI,EAAE,2EAA2E;aAClF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAElD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,IAAI,EAAE,uEAAuE;aAC9E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3DY,8CAAiB;AA0BtB;IArBL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,4GAA4G;YAC5G,6HAA6H;YAC7H,wGAAwG;YACxG,uEAAuE;QACzE,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;YACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;sDAiCD;4BA1DU,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,iBAAiB,CA2D7B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { Context } from "@rekog/mcp-nest";
|
|
2
1
|
import { AnkiConnectClient } from "../../../clients/anki-connect.client";
|
|
3
2
|
export declare class GuiShowQuestionTool {
|
|
4
3
|
private readonly ankiClient;
|
|
5
4
|
private readonly logger;
|
|
6
5
|
constructor(ankiClient: AnkiConnectClient);
|
|
7
|
-
guiShowQuestion(_args: Record<string, never
|
|
6
|
+
guiShowQuestion(_args: Record<string, never>): Promise<{
|
|
8
7
|
[x: string]: unknown;
|
|
9
8
|
content: ({
|
|
10
9
|
type: "text";
|
|
@@ -22,12 +22,10 @@ let GuiShowQuestionTool = GuiShowQuestionTool_1 = class GuiShowQuestionTool {
|
|
|
22
22
|
constructor(ankiClient) {
|
|
23
23
|
this.ankiClient = ankiClient;
|
|
24
24
|
}
|
|
25
|
-
async guiShowQuestion(_args
|
|
25
|
+
async guiShowQuestion(_args) {
|
|
26
26
|
try {
|
|
27
27
|
this.logger.log("Showing question side of current card");
|
|
28
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
29
28
|
const inReview = await this.ankiClient.invoke("guiShowQuestion");
|
|
30
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
31
29
|
if (!inReview) {
|
|
32
30
|
this.logger.warn("Not in review mode");
|
|
33
31
|
return {
|
|
@@ -76,7 +74,7 @@ __decorate([
|
|
|
76
74
|
},
|
|
77
75
|
}),
|
|
78
76
|
__metadata("design:type", Function),
|
|
79
|
-
__metadata("design:paramtypes", [Object
|
|
77
|
+
__metadata("design:paramtypes", [Object]),
|
|
80
78
|
__metadata("design:returntype", Promise)
|
|
81
79
|
], GuiShowQuestionTool.prototype, "guiShowQuestion", null);
|
|
82
80
|
exports.GuiShowQuestionTool = GuiShowQuestionTool = GuiShowQuestionTool_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui-show-question.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-show-question.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;
|
|
1
|
+
{"version":3,"file":"gui-show-question.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-show-question.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAMtD,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAGD;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/D,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAuBxD,AAAN,KAAK,CAAC,eAAe,CAAC,KAA4B;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YAGzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAU,iBAAiB,CAAC,CAAC;YAE1E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,+CAA+C;oBACxD,IAAI,EAAE,kDAAkD;iBACzD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAEvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,gCAAgC;gBACzC,IAAI,EAAE,oFAAoF;aAC3F,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAEpD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,IAAI,EAAE,uEAAuE;aAC9E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3DY,kDAAmB;AA0BxB;IArBL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,8GAA8G;YAC9G,+HAA+H;YAC/H,wGAAwG;YACxG,yEAAyE;QAC3E,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;YACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,oBAAoB;YAC3B,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;0DAiCD;8BA1DU,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,mBAAmB,CA2D/B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { Context } from "@rekog/mcp-nest";
|
|
2
1
|
import { AnkiConnectClient } from "../../../clients/anki-connect.client";
|
|
3
2
|
export declare class GuiUndoTool {
|
|
4
3
|
private readonly ankiClient;
|
|
5
4
|
private readonly logger;
|
|
6
5
|
constructor(ankiClient: AnkiConnectClient);
|
|
7
|
-
guiUndo(_args: Record<string, never
|
|
6
|
+
guiUndo(_args: Record<string, never>): Promise<{
|
|
8
7
|
[x: string]: unknown;
|
|
9
8
|
content: ({
|
|
10
9
|
type: "text";
|
|
@@ -22,12 +22,10 @@ let GuiUndoTool = GuiUndoTool_1 = class GuiUndoTool {
|
|
|
22
22
|
constructor(ankiClient) {
|
|
23
23
|
this.ankiClient = ankiClient;
|
|
24
24
|
}
|
|
25
|
-
async guiUndo(_args
|
|
25
|
+
async guiUndo(_args) {
|
|
26
26
|
try {
|
|
27
27
|
this.logger.log("Undoing last action in Anki");
|
|
28
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
29
28
|
const success = await this.ankiClient.invoke("guiUndo");
|
|
30
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
31
29
|
if (!success) {
|
|
32
30
|
this.logger.warn("Nothing to undo");
|
|
33
31
|
return {
|
|
@@ -76,7 +74,7 @@ __decorate([
|
|
|
76
74
|
},
|
|
77
75
|
}),
|
|
78
76
|
__metadata("design:type", Function),
|
|
79
|
-
__metadata("design:paramtypes", [Object
|
|
77
|
+
__metadata("design:paramtypes", [Object]),
|
|
80
78
|
__metadata("design:returntype", Promise)
|
|
81
79
|
], GuiUndoTool.prototype, "guiUndo", null);
|
|
82
80
|
exports.GuiUndoTool = GuiUndoTool = GuiUndoTool_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui-undo.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-undo.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;
|
|
1
|
+
{"version":3,"file":"gui-undo.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/gui/tools/gui-undo.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAMtD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGO;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAEvD,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAuBxD,AAAN,KAAK,CAAC,OAAO,CAAC,KAA4B;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAG/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAU,SAAS,CAAC,CAAC;YAEjE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,iBAAiB;oBAC1B,IAAI,EAAE,8CAA8C;iBACrD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,iCAAiC;gBAC1C,IAAI,EAAE,kEAAkE;aACzE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAElD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,IAAI,EAAE,kDAAkD;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3DY,kCAAW;AA0BhB;IArBL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EACT,yFAAyF;YACzF,uEAAuE;YACvE,6EAA6E;YAC7E,0EAA0E;QAC5E,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;YACnB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;SACtB;KACF,CAAC;;;;0CAiCD;sBA1DU,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,WAAW,CA2DvB"}
|
|
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.NgrokService = void 0;
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
8
|
const http_1 = __importDefault(require("http"));
|
|
9
|
+
const common_1 = require("@nestjs/common");
|
|
9
10
|
class NgrokService {
|
|
11
|
+
logger = new common_1.Logger(NgrokService.name);
|
|
10
12
|
process = null;
|
|
11
13
|
cleanupHandlersRegistered = false;
|
|
12
14
|
async start(port) {
|
|
@@ -28,7 +30,7 @@ class NgrokService {
|
|
|
28
30
|
});
|
|
29
31
|
this.process.on("exit", (code, _signal) => {
|
|
30
32
|
if (code !== 0 && code !== null) {
|
|
31
|
-
|
|
33
|
+
this.logger.error(`ngrok exited with code ${code}`);
|
|
32
34
|
}
|
|
33
35
|
});
|
|
34
36
|
await this.waitForNgrok();
|
|
@@ -93,7 +95,7 @@ class NgrokService {
|
|
|
93
95
|
}
|
|
94
96
|
registerCleanupHandlers() {
|
|
95
97
|
process.on("SIGINT", () => {
|
|
96
|
-
|
|
98
|
+
this.logger.log("\n\n🛑 Shutting down ngrok tunnel...");
|
|
97
99
|
this.cleanup();
|
|
98
100
|
process.exit(0);
|
|
99
101
|
});
|
|
@@ -105,7 +107,7 @@ class NgrokService {
|
|
|
105
107
|
this.cleanup();
|
|
106
108
|
});
|
|
107
109
|
process.on("uncaughtException", (err) => {
|
|
108
|
-
|
|
110
|
+
this.logger.error("Uncaught exception:", err);
|
|
109
111
|
this.cleanup();
|
|
110
112
|
process.exit(1);
|
|
111
113
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.service.js","sourceRoot":"","sources":["../../src/services/ngrok.service.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAoD;AACpD,gDAAwB;
|
|
1
|
+
{"version":3,"file":"ngrok.service.js","sourceRoot":"","sources":["../../src/services/ngrok.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,10 @@ export declare const mockCards: {
|
|
|
87
87
|
type: number;
|
|
88
88
|
queue: number;
|
|
89
89
|
modelName: string;
|
|
90
|
+
fieldOrder: number;
|
|
91
|
+
ord: number;
|
|
92
|
+
css: string;
|
|
93
|
+
note: number;
|
|
90
94
|
};
|
|
91
95
|
newCard: {
|
|
92
96
|
cardId: number;
|
|
@@ -102,6 +106,10 @@ export declare const mockCards: {
|
|
|
102
106
|
type: number;
|
|
103
107
|
queue: number;
|
|
104
108
|
modelName: string;
|
|
109
|
+
fieldOrder: number;
|
|
110
|
+
ord: number;
|
|
111
|
+
css: string;
|
|
112
|
+
note: number;
|
|
105
113
|
};
|
|
106
114
|
};
|
|
107
115
|
export declare const mockQueries: {
|
|
@@ -72,6 +72,10 @@ exports.mockCards = {
|
|
|
72
72
|
type: 2,
|
|
73
73
|
queue: 2,
|
|
74
74
|
modelName: "Basic",
|
|
75
|
+
fieldOrder: 0,
|
|
76
|
+
ord: 0,
|
|
77
|
+
css: "",
|
|
78
|
+
note: 1502298033753,
|
|
75
79
|
},
|
|
76
80
|
newCard: {
|
|
77
81
|
cardId: 1502298033758,
|
|
@@ -87,6 +91,10 @@ exports.mockCards = {
|
|
|
87
91
|
type: 0,
|
|
88
92
|
queue: 0,
|
|
89
93
|
modelName: "Basic (and reversed card)",
|
|
94
|
+
fieldOrder: 0,
|
|
95
|
+
ord: 0,
|
|
96
|
+
css: "",
|
|
97
|
+
note: 1502298033757,
|
|
90
98
|
},
|
|
91
99
|
};
|
|
92
100
|
exports.mockQueries = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../src/test-fixtures/mock-data.ts"],"names":[],"mappings":";;;AAIa,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE;QACP,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1C;QACD,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;QAC9B,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,UAAU;KAChB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,2BAA2B;QACtC,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;YACnC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;SACnC;QACD,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAC/B,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;QACrC,GAAG,EAAE,UAAU;KAChB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,CAAC,EAAE;YAChE,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,CAAC,EAAE;SACrE;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,UAAU;KAChB;CACF,CAAC;AAEW,QAAA,SAAS,GAAG;IACvB,SAAS,EAAE;QACT,eAAe,EAAE;YACf,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,GAAG;SACnB;QACD,eAAe,EAAE;YACf,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,GAAG;SACnB;KACF;IACD,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;CACvE,CAAC;AAEW,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE;QACP,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,cAAc;QACtB,GAAG,EAAE,CAAC;QACN,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../src/test-fixtures/mock-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleTunnel = exports.handleLogout = exports.handleLogin = void 0;
|
|
4
|
+
var login_command_1 = require("./login.command");
|
|
5
|
+
Object.defineProperty(exports, "handleLogin", { enumerable: true, get: function () { return login_command_1.handleLogin; } });
|
|
6
|
+
var logout_command_1 = require("./logout.command");
|
|
7
|
+
Object.defineProperty(exports, "handleLogout", { enumerable: true, get: function () { return logout_command_1.handleLogout; } });
|
|
8
|
+
var tunnel_command_1 = require("./tunnel.command");
|
|
9
|
+
Object.defineProperty(exports, "handleTunnel", { enumerable: true, get: function () { return tunnel_command_1.handleTunnel; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tunnel/commands/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AACpB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleLogin = handleLogin;
|
|
4
|
+
const tunnel_1 = require("..");
|
|
5
|
+
const app_config_service_1 = require("../../app-config.service");
|
|
6
|
+
const config_1 = require("../../config");
|
|
7
|
+
const perform_login_1 = require("./perform-login");
|
|
8
|
+
async function handleLogin(cli, tunnelUrl) {
|
|
9
|
+
const credentialsService = new tunnel_1.CredentialsService();
|
|
10
|
+
const validatedConfig = (0, config_1.loadValidatedConfig)({ tunnel: tunnelUrl });
|
|
11
|
+
const appConfigService = new app_config_service_1.AppConfigService(validatedConfig);
|
|
12
|
+
const deviceFlowService = new tunnel_1.DeviceFlowService(appConfigService);
|
|
13
|
+
cli.blank();
|
|
14
|
+
try {
|
|
15
|
+
await (0, perform_login_1.performLogin)({ credentialsService, deviceFlowService, cli });
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
cli.blank();
|
|
19
|
+
if (error instanceof tunnel_1.DeviceFlowError) {
|
|
20
|
+
cli.error((0, perform_login_1.translateDeviceFlowError)(error));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
cli.error(`Login failed: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? error : undefined);
|
|
24
|
+
}
|
|
25
|
+
cli.blank();
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=login.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.command.js","sourceRoot":"","sources":["../../../src/tunnel/commands/login.command.ts"],"names":[],"mappings":";;AA0BA,kCAyBC;AAnDD,+BAIkB;AAClB,iEAAwD;AACxD,yCAA+C;AAE/C,mDAAyE;AAkBlE,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,SAAkB;IAC5D,MAAM,kBAAkB,GAAG,IAAI,2BAAkB,EAAE,CAAC;IACpD,MAAM,eAAe,GAAG,IAAA,4BAAmB,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,qCAAgB,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAG,IAAI,0BAAiB,CAAC,gBAAgB,CAAC,CAAC;IAElE,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,IAAA,4BAAY,EAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,IAAI,KAAK,YAAY,wBAAe,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,IAAA,wCAAwB,EAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CACP,iBAAiB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleLogout = handleLogout;
|
|
4
|
+
const credentials_service_1 = require("../credentials.service");
|
|
5
|
+
async function handleLogout(cli) {
|
|
6
|
+
const credentialsService = new credentials_service_1.CredentialsService();
|
|
7
|
+
const hasCredentials = await credentialsService.hasCredentials();
|
|
8
|
+
if (!hasCredentials) {
|
|
9
|
+
cli.blank();
|
|
10
|
+
cli.info("Not logged in. Nothing to do.");
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
await credentialsService.clearCredentials();
|
|
15
|
+
cli.blank();
|
|
16
|
+
cli.success("Logged out successfully.");
|
|
17
|
+
cli.info(`Credentials removed from ${credentialsService.getCredentialsPath()}`);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
cli.blank();
|
|
21
|
+
cli.error(`Failed to remove credentials: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? error : undefined);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=logout.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.command.js","sourceRoot":"","sources":["../../../src/tunnel/commands/logout.command.ts"],"names":[],"mappings":";;AAsBA,oCA6BC;AAnDD,gEAA4D;AAsBrD,KAAK,UAAU,YAAY,CAAC,GAAQ;IACzC,MAAM,kBAAkB,GAAG,IAAI,wCAAkB,EAAE,CAAC;IAGpD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,cAAc,EAAE,CAAC;IAEjE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAGD,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;QAE5C,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CACN,4BAA4B,kBAAkB,CAAC,kBAAkB,EAAE,EAAE,CACtE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CACP,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CredentialsService, DeviceFlowError, DeviceFlowService, TunnelCredentials } from "..";
|
|
2
|
+
import type { Cli } from "../../cli/cli-output";
|
|
3
|
+
export interface PerformLoginDeps {
|
|
4
|
+
credentialsService: CredentialsService;
|
|
5
|
+
deviceFlowService: DeviceFlowService;
|
|
6
|
+
cli: Cli;
|
|
7
|
+
}
|
|
8
|
+
export declare function translateDeviceFlowError(error: DeviceFlowError): string;
|
|
9
|
+
export declare function performLogin(deps: PerformLoginDeps): Promise<TunnelCredentials>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.translateDeviceFlowError = translateDeviceFlowError;
|
|
4
|
+
exports.performLogin = performLogin;
|
|
5
|
+
const spinner_1 = require("../../cli/spinner");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
9
|
+
async function openBrowser(url) {
|
|
10
|
+
try {
|
|
11
|
+
switch (process.platform) {
|
|
12
|
+
case "darwin":
|
|
13
|
+
await execFileAsync("open", [url]);
|
|
14
|
+
break;
|
|
15
|
+
case "win32":
|
|
16
|
+
await execFileAsync("cmd", ["/c", "start", "", url]);
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
await execFileAsync("xdg-open", [url]);
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function translateDeviceFlowError(error) {
|
|
27
|
+
switch (error.code) {
|
|
28
|
+
case "expired_token":
|
|
29
|
+
return "Authentication timed out. Please try again with 'ankimcp --login'";
|
|
30
|
+
case "access_denied":
|
|
31
|
+
return "Authentication was denied. Please try again with 'ankimcp --login'";
|
|
32
|
+
case "network_error":
|
|
33
|
+
case "timeout":
|
|
34
|
+
return "Failed to connect to auth server. Check your internet connection.";
|
|
35
|
+
default:
|
|
36
|
+
return `Authentication failed: ${error.message}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function performLogin(deps) {
|
|
40
|
+
const { credentialsService, deviceFlowService, cli } = deps;
|
|
41
|
+
const deviceCode = await deviceFlowService.requestDeviceCode();
|
|
42
|
+
cli.info("Opening browser for authentication...");
|
|
43
|
+
cli.info(`If browser doesn't open, visit: ${deviceCode.verification_uri}`);
|
|
44
|
+
cli.info(`Enter code: ${deviceCode.user_code}`);
|
|
45
|
+
cli.blank();
|
|
46
|
+
const urlToOpen = deviceCode.verification_uri_complete || deviceCode.verification_uri;
|
|
47
|
+
await openBrowser(urlToOpen);
|
|
48
|
+
const stopSpinner = (0, spinner_1.startSpinner)("Waiting for authentication...");
|
|
49
|
+
let tokenResponse;
|
|
50
|
+
try {
|
|
51
|
+
tokenResponse = await deviceFlowService.pollForToken(deviceCode.device_code, deviceCode.interval, deviceCode.expires_in);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
stopSpinner();
|
|
55
|
+
}
|
|
56
|
+
cli.success("Authentication successful");
|
|
57
|
+
cli.blank();
|
|
58
|
+
const expiresAt = new Date(Date.now() + tokenResponse.expires_in * 1000).toISOString();
|
|
59
|
+
const credentials = {
|
|
60
|
+
access_token: tokenResponse.access_token,
|
|
61
|
+
refresh_token: tokenResponse.refresh_token,
|
|
62
|
+
expires_at: expiresAt,
|
|
63
|
+
user: tokenResponse.user,
|
|
64
|
+
};
|
|
65
|
+
await credentialsService.saveCredentials(credentials);
|
|
66
|
+
cli.info(`Logged in as: ${tokenResponse.user.email}`);
|
|
67
|
+
cli.info(`Tier: ${tokenResponse.user.tier}`);
|
|
68
|
+
cli.info(`Credentials saved to ${credentialsService.getCredentialsPath()}`);
|
|
69
|
+
cli.blank();
|
|
70
|
+
return credentials;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=perform-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perform-login.js","sourceRoot":"","sources":["../../../src/tunnel/commands/perform-login.ts"],"names":[],"mappings":"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"}
|