@codemieai/code 0.0.2 ā 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +357 -719
- package/bin/codemie-claude.js +145 -0
- package/bin/codemie-code.js +128 -15
- package/bin/codemie-codex.js +137 -0
- package/bin/codemie.js +1 -1
- package/dist/agents/adapters/claude-code.d.ts +7 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +94 -58
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +7 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +104 -39
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +689 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +278 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +92 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +327 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +40 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +160 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +45 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +407 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +418 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +179 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +1408 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +11 -15
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +350 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +308 -71
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +297 -31
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +523 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +85 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +118 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +397 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +226 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +172 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +150 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +32 -25
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -855
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/eslint.config.mjs +0 -43
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-compatibility.js","sourceRoot":"","sources":["../../src/utils/agent-compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B;;;GAGG;AACH,MAAM,mBAAmB,GAAuC;IAC9D,QAAQ,EAAE;QACR,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC;QAC3E,oBAAoB,EAAE,EAAE,CAAC,4CAA4C;KACtE;IACD,OAAO,EAAE;QACP,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;QAClD,oBAAoB,EAAE;YACpB,UAAU,EAAY,0BAA0B;YAChD,kBAAkB,CAAI,8BAA8B;SACrD;KACF;IACD,cAAc,EAAE;QACd,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC;QAC3E,oBAAoB,EAAE,EAAE,CAAC,oCAAoC;KAC9D;CACF,CAAC;AAWF;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,SAAiB,EACjB,MAA4B;IAE5B,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAErD,qDAAqD;IACrD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kBAAkB,SAAS,GAAG;YACrC,WAAW,EAAE,CAAC,gCAAgC,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC;IAE9C,yCAAyC;IACzC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,wBAAwB,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrE,yDAAyD;SAC1D,CAAC;QAEF,0EAA0E;QAC1E,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CACd,8CAA8C,EAC9C,oDAAoD,EACpD,wCAAwC,EACxC,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,aAAa,QAAQ,yBAAyB,SAAS,EAAE;YAChE,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,MAA4B;IAE5B,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAErD,qDAAqD;IACrD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kBAAkB,SAAS,GAAG;YACrC,WAAW,EAAE,CAAC,gCAAgC,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;IAExC,6CAA6C;IAC7C,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAClE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CACpB,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,UAAU,KAAK,4BAA4B,SAAS,EAAE;gBAC7D,WAAW,EAAE;oBACX,GAAG,SAAS,0DAA0D;oBACtE,+CAA+C;oBAC/C,sCAAsC,SAAS,iBAAiB;iBACjE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA2B,EAC3B,MAAwC;IAExC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAErD,oDAAoD;YACpD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;oBACxD,qEAAqE;oBACrE,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBAC/C,qEAAqE;gBACrE,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrD,OAAO,aAAa,EAAE,kBAAkB,IAAI,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,QAAgB;IAClE,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC,CAAC,gCAAgC;IAElE,OAAO,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-tips.d.ts","sourceRoot":"","sources":["../../src/utils/async-tips.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"async-tips.d.ts","sourceRoot":"","sources":["../../src/utils/async-tips.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAAiB;;IAMzC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAchB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI;IAOxB;;;OAGG;IACH,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IA6BxC;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI;IAgBnD;;OAEG;IACH,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI;IA6BrC;;OAEG;IACH,YAAY,IAAI,IAAI;IA0BpB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
package/dist/utils/async-tips.js
CHANGED
|
@@ -1,46 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.asyncTipDisplay = exports.AsyncTipDisplay = void 0;
|
|
40
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const fs = __importStar(require("fs"));
|
|
42
|
-
const path = __importStar(require("path"));
|
|
43
|
-
class AsyncTipDisplay {
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { getDirname } from '../utils/dirname.js';
|
|
5
|
+
export class AsyncTipDisplay {
|
|
44
6
|
tips = [];
|
|
45
7
|
shownTips = new Set();
|
|
46
8
|
currentTipIndex = -1;
|
|
@@ -55,7 +17,7 @@ class AsyncTipDisplay {
|
|
|
55
17
|
*/
|
|
56
18
|
loadTips() {
|
|
57
19
|
try {
|
|
58
|
-
const tipsPath = path.join(
|
|
20
|
+
const tipsPath = path.join(getDirname(import.meta.url), '../data/tips.json');
|
|
59
21
|
const tipsData = fs.readFileSync(tipsPath, 'utf-8');
|
|
60
22
|
this.tips = JSON.parse(tipsData);
|
|
61
23
|
}
|
|
@@ -90,11 +52,11 @@ class AsyncTipDisplay {
|
|
|
90
52
|
* Format tip for display at bottom of terminal
|
|
91
53
|
*/
|
|
92
54
|
formatTip(tip) {
|
|
93
|
-
const separator =
|
|
55
|
+
const separator = chalk.dim('ā'.repeat(60));
|
|
94
56
|
let output = '\n' + separator + '\n';
|
|
95
|
-
output +=
|
|
57
|
+
output += chalk.cyan('š” Tip: ') + chalk.white(tip.message) + '\n';
|
|
96
58
|
if (tip.command) {
|
|
97
|
-
output +=
|
|
59
|
+
output += chalk.gray(' ā ') + chalk.blueBright(tip.command) + '\n';
|
|
98
60
|
}
|
|
99
61
|
output += separator;
|
|
100
62
|
return output;
|
|
@@ -188,12 +150,12 @@ class AsyncTipDisplay {
|
|
|
188
150
|
if (tipsToShow.length === 0)
|
|
189
151
|
return;
|
|
190
152
|
console.log();
|
|
191
|
-
const separator =
|
|
153
|
+
const separator = chalk.dim('ā'.repeat(60));
|
|
192
154
|
console.log(separator);
|
|
193
155
|
tipsToShow.forEach((tip, index) => {
|
|
194
|
-
console.log(
|
|
156
|
+
console.log(chalk.cyan('š” Tip:'), chalk.white(tip.message));
|
|
195
157
|
if (tip.command) {
|
|
196
|
-
console.log(
|
|
158
|
+
console.log(chalk.gray(' ā'), chalk.blueBright(tip.command));
|
|
197
159
|
}
|
|
198
160
|
if (index < tipsToShow.length - 1) {
|
|
199
161
|
console.log(); // Spacing between tips
|
|
@@ -215,11 +177,11 @@ class AsyncTipDisplay {
|
|
|
215
177
|
// Move to bottom (2 lines from bottom for the tip)
|
|
216
178
|
process.stdout.write(`\x1b[${terminalHeight - 3};0H`);
|
|
217
179
|
// Show tip
|
|
218
|
-
const separator =
|
|
180
|
+
const separator = chalk.dim('ā'.repeat(Math.min(60, process.stdout.columns || 80)));
|
|
219
181
|
process.stdout.write(separator + '\n');
|
|
220
|
-
process.stdout.write(
|
|
182
|
+
process.stdout.write(chalk.cyan('š” ') + chalk.white(tip.message));
|
|
221
183
|
if (tip.command) {
|
|
222
|
-
process.stdout.write(
|
|
184
|
+
process.stdout.write(chalk.gray(' ā ') + chalk.blueBright(tip.command));
|
|
223
185
|
}
|
|
224
186
|
process.stdout.write('\n' + separator);
|
|
225
187
|
// Restore cursor position
|
|
@@ -234,9 +196,8 @@ class AsyncTipDisplay {
|
|
|
234
196
|
this.currentTipIndex = -1;
|
|
235
197
|
}
|
|
236
198
|
}
|
|
237
|
-
exports.AsyncTipDisplay = AsyncTipDisplay;
|
|
238
199
|
/**
|
|
239
200
|
* Global async tip display instance
|
|
240
201
|
*/
|
|
241
|
-
|
|
202
|
+
export const asyncTipDisplay = new AsyncTipDisplay();
|
|
242
203
|
//# sourceMappingURL=async-tips.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-tips.js","sourceRoot":"","sources":["../../src/utils/async-tips.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"async-tips.js","sourceRoot":"","sources":["../../src/utils/async-tips.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform clipboard utility for handling images
|
|
3
|
+
*/
|
|
4
|
+
export interface ClipboardImage {
|
|
5
|
+
data: string;
|
|
6
|
+
mimeType: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Check if clipboard contains image data (cross-platform)
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasClipboardImage(): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Get clipboard image data (cross-platform)
|
|
14
|
+
*/
|
|
15
|
+
export declare function getClipboardImage(): Promise<ClipboardImage | null>;
|
|
16
|
+
//# sourceMappingURL=clipboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAmB1D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmBxE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform clipboard utility for handling images
|
|
3
|
+
*/
|
|
4
|
+
import { exec } from 'child_process';
|
|
5
|
+
import { promisify } from 'util';
|
|
6
|
+
import { platform } from 'os';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
/**
|
|
9
|
+
* Check if clipboard contains image data (cross-platform)
|
|
10
|
+
*/
|
|
11
|
+
export async function hasClipboardImage() {
|
|
12
|
+
try {
|
|
13
|
+
const platformName = platform();
|
|
14
|
+
switch (platformName) {
|
|
15
|
+
case 'darwin': // macOS
|
|
16
|
+
return await hasClipboardImageMacOS();
|
|
17
|
+
case 'win32': // Windows
|
|
18
|
+
return await hasClipboardImageWindows();
|
|
19
|
+
case 'linux': // Linux
|
|
20
|
+
return await hasClipboardImageLinux();
|
|
21
|
+
default:
|
|
22
|
+
console.warn(`Clipboard image detection not implemented for platform: ${platformName}`);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error('Error checking clipboard for images:', error);
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get clipboard image data (cross-platform)
|
|
33
|
+
*/
|
|
34
|
+
export async function getClipboardImage() {
|
|
35
|
+
try {
|
|
36
|
+
const platformName = platform();
|
|
37
|
+
switch (platformName) {
|
|
38
|
+
case 'darwin': // macOS
|
|
39
|
+
return await getClipboardImageMacOS();
|
|
40
|
+
case 'win32': // Windows
|
|
41
|
+
return await getClipboardImageWindows();
|
|
42
|
+
case 'linux': // Linux
|
|
43
|
+
return await getClipboardImageLinux();
|
|
44
|
+
default:
|
|
45
|
+
console.warn(`Clipboard image extraction not implemented for platform: ${platformName}`);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error('Error getting clipboard image:', error);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// macOS implementation
|
|
55
|
+
async function hasClipboardImageMacOS() {
|
|
56
|
+
try {
|
|
57
|
+
const { stdout } = await execAsync('osascript -e "tell application \\"System Events\\" to set theTypes to clipboard info"');
|
|
58
|
+
const types = stdout.trim();
|
|
59
|
+
// Check for image types in clipboard
|
|
60
|
+
return types.includes('«class PNGf»') ||
|
|
61
|
+
types.includes('«class JPEG»') ||
|
|
62
|
+
types.includes('«class TIFF»') ||
|
|
63
|
+
types.includes('public.png') ||
|
|
64
|
+
types.includes('public.jpeg');
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function getClipboardImageMacOS() {
|
|
71
|
+
try {
|
|
72
|
+
// Try PNG first using AppleScript (more reliable for screenshots)
|
|
73
|
+
let result = await execAsync('osascript -e "set theData to the clipboard as «class PNGf»" -e "return theData" 2>/dev/null | xxd -p -c 256 | tr -d \'\\n\' | xxd -r -p | base64', { maxBuffer: 10 * 1024 * 1024 });
|
|
74
|
+
if (result.stdout.trim().length > 100) {
|
|
75
|
+
return {
|
|
76
|
+
data: result.stdout.trim(),
|
|
77
|
+
mimeType: 'image/png'
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Try JPEG if PNG failed
|
|
81
|
+
result = await execAsync('osascript -e "set theData to the clipboard as «class JPEG»" -e "return theData" 2>/dev/null | xxd -p -c 256 | tr -d \'\\n\' | xxd -r -p | base64', { maxBuffer: 10 * 1024 * 1024 });
|
|
82
|
+
if (result.stdout.trim().length > 100) {
|
|
83
|
+
return {
|
|
84
|
+
data: result.stdout.trim(),
|
|
85
|
+
mimeType: 'image/jpeg'
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Fallback to pbpaste with TIFF (screenshots are often stored as TIFF internally)
|
|
89
|
+
result = await execAsync('pbpaste -Prefer public.tiff 2>/dev/null | base64', { maxBuffer: 10 * 1024 * 1024 });
|
|
90
|
+
if (result.stdout.trim().length > 100) {
|
|
91
|
+
return {
|
|
92
|
+
data: result.stdout.trim(),
|
|
93
|
+
mimeType: 'image/tiff' // Note: this might need conversion for some LLMs
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Windows implementation
|
|
103
|
+
async function hasClipboardImageWindows() {
|
|
104
|
+
try {
|
|
105
|
+
const { stdout } = await execAsync('powershell -command "Get-Clipboard -Format Image -ErrorAction SilentlyContinue | Measure-Object | Select-Object -ExpandProperty Count"');
|
|
106
|
+
return parseInt(stdout.trim()) > 0;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async function getClipboardImageWindows() {
|
|
113
|
+
try {
|
|
114
|
+
// Save clipboard image to temp file, then read as base64
|
|
115
|
+
const tempFile = `${process.env.TEMP || '/tmp'}/clipboard_image_${Date.now()}.png`;
|
|
116
|
+
await execAsync(`powershell -command "Get-Clipboard -Format Image | ForEach-Object { $_.Save('${tempFile}', [System.Drawing.Imaging.ImageFormat]::Png) }"`);
|
|
117
|
+
const { stdout } = await execAsync(`powershell -command "[Convert]::ToBase64String([IO.File]::ReadAllBytes('${tempFile}'))"`);
|
|
118
|
+
// Clean up temp file
|
|
119
|
+
try {
|
|
120
|
+
await execAsync(`del "${tempFile}"`);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Ignore cleanup errors
|
|
124
|
+
}
|
|
125
|
+
if (stdout.trim().length > 100) {
|
|
126
|
+
return {
|
|
127
|
+
data: stdout.trim(),
|
|
128
|
+
mimeType: 'image/png'
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Linux implementation
|
|
138
|
+
async function hasClipboardImageLinux() {
|
|
139
|
+
try {
|
|
140
|
+
// Check if xclip is available and clipboard has image
|
|
141
|
+
const { stdout } = await execAsync('xclip -selection clipboard -t TARGETS -o 2>/dev/null');
|
|
142
|
+
return stdout.includes('image/png') || stdout.includes('image/jpeg');
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Try with xsel as fallback
|
|
146
|
+
try {
|
|
147
|
+
await execAsync('xsel --clipboard --output 2>/dev/null | file - | grep -q image');
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async function getClipboardImageLinux() {
|
|
156
|
+
try {
|
|
157
|
+
// Try PNG first
|
|
158
|
+
let result = await execAsync('xclip -selection clipboard -t image/png -o 2>/dev/null | base64 -w 0', { maxBuffer: 10 * 1024 * 1024 });
|
|
159
|
+
if (result.stdout.trim().length > 100) {
|
|
160
|
+
return {
|
|
161
|
+
data: result.stdout.trim(),
|
|
162
|
+
mimeType: 'image/png'
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
// Try JPEG
|
|
166
|
+
result = await execAsync('xclip -selection clipboard -t image/jpeg -o 2>/dev/null | base64 -w 0', { maxBuffer: 10 * 1024 * 1024 });
|
|
167
|
+
if (result.stdout.trim().length > 100) {
|
|
168
|
+
return {
|
|
169
|
+
data: result.stdout.trim(),
|
|
170
|
+
mimeType: 'image/jpeg'
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SSOAuthResult } from '../types/sso.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validates that the user has required CodeMie integrations and prompts for selection
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateCodeMieIntegrations(authResult: SSOAuthResult, spinner?: any): Promise<{
|
|
6
|
+
id: string;
|
|
7
|
+
alias: string;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Validates that a specific integration alias exists and is of type LiteLLM
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateIntegrationAlias(apiUrl: string, cookies: Record<string, string>, integrationAlias: string): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Gets all available integration types for debugging/informational purposes
|
|
15
|
+
*/
|
|
16
|
+
export declare function getAvailableIntegrationTypes(apiUrl: string, cookies: Record<string, string>): Promise<string[]>;
|
|
17
|
+
//# sourceMappingURL=codemie-integration-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemie-integration-validator.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,aAAa,EACzB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBxC;AAuED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { fetchCodeMieIntegrations, CODEMIE_ENDPOINTS } from './codemie-model-fetcher.js';
|
|
4
|
+
/**
|
|
5
|
+
* Validates that the user has required CodeMie integrations and prompts for selection
|
|
6
|
+
*/
|
|
7
|
+
export async function validateCodeMieIntegrations(authResult, spinner) {
|
|
8
|
+
const integrations = await fetchCodeMieIntegrations(authResult.apiUrl, authResult.cookies, CODEMIE_ENDPOINTS.USER_SETTINGS);
|
|
9
|
+
// Integrations are already filtered by API for LiteLLM type
|
|
10
|
+
if (integrations.length === 0) {
|
|
11
|
+
console.log(chalk.red('\nā No CodeMie LiteLLM integration found\n'));
|
|
12
|
+
console.log(chalk.yellow('š Required Setup Steps:'));
|
|
13
|
+
console.log(chalk.white(' 1. Contact your support team to request a LiteLLM key'));
|
|
14
|
+
console.log(chalk.white(' 2. In CodeMie, go to Integrations ā User Integrations'));
|
|
15
|
+
console.log(chalk.white(' 3. Add the key as a new integration with type "LiteLLM"'));
|
|
16
|
+
console.log(chalk.white(' 4. Re-run: codemie setup\n'));
|
|
17
|
+
throw new Error('CodeMie LiteLLM integration setup required');
|
|
18
|
+
}
|
|
19
|
+
// Return selected integration ID and alias
|
|
20
|
+
return await promptForIntegrationSelection(integrations, spinner);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prompts user to select from available LiteLLM integrations
|
|
24
|
+
*/
|
|
25
|
+
async function promptForIntegrationSelection(integrations, spinner) {
|
|
26
|
+
if (integrations.length === 1) {
|
|
27
|
+
// Auto-select single integration with confirmation
|
|
28
|
+
const integration = integrations[0];
|
|
29
|
+
const displayName = integration.project_name
|
|
30
|
+
? `${integration.alias} (${integration.project_name})`
|
|
31
|
+
: integration.alias;
|
|
32
|
+
// Stop spinner before showing prompt
|
|
33
|
+
if (spinner) {
|
|
34
|
+
spinner.stop();
|
|
35
|
+
}
|
|
36
|
+
const { confirm } = await inquirer.prompt([{
|
|
37
|
+
type: 'confirm',
|
|
38
|
+
name: 'confirm',
|
|
39
|
+
message: `Use CodeMie LiteLLM integration "${displayName}"?`,
|
|
40
|
+
default: true
|
|
41
|
+
}]);
|
|
42
|
+
if (!confirm) {
|
|
43
|
+
throw new Error('Setup cancelled by user');
|
|
44
|
+
}
|
|
45
|
+
console.log(chalk.green(`ā Selected integration: ${displayName}`));
|
|
46
|
+
return { id: integration.id, alias: integration.alias };
|
|
47
|
+
}
|
|
48
|
+
// Multiple integrations - show selection list
|
|
49
|
+
// Stop spinner before showing prompt
|
|
50
|
+
if (spinner) {
|
|
51
|
+
spinner.stop();
|
|
52
|
+
}
|
|
53
|
+
const choices = integrations.map(integration => {
|
|
54
|
+
// Show both alias and project_name
|
|
55
|
+
const displayName = integration.project_name && integration.project_name.trim() !== ''
|
|
56
|
+
? `${integration.alias} (${integration.project_name})`
|
|
57
|
+
: integration.alias;
|
|
58
|
+
return {
|
|
59
|
+
name: displayName,
|
|
60
|
+
value: integration.id
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
const { selectedId } = await inquirer.prompt([{
|
|
64
|
+
type: 'list',
|
|
65
|
+
name: 'selectedId',
|
|
66
|
+
message: `Choose a CodeMie LiteLLM integration (${integrations.length} available):`,
|
|
67
|
+
choices,
|
|
68
|
+
pageSize: 15
|
|
69
|
+
}]);
|
|
70
|
+
const selectedIntegration = integrations.find(i => i.id === selectedId);
|
|
71
|
+
const displayName = selectedIntegration?.project_name
|
|
72
|
+
? `${selectedIntegration.alias} (${selectedIntegration.project_name})`
|
|
73
|
+
: selectedIntegration?.alias || selectedId;
|
|
74
|
+
console.log(chalk.green(`ā Selected integration: ${displayName}`));
|
|
75
|
+
return { id: selectedId, alias: selectedIntegration?.alias || '' };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Validates that a specific integration alias exists and is of type LiteLLM
|
|
79
|
+
*/
|
|
80
|
+
export async function validateIntegrationAlias(apiUrl, cookies, integrationAlias) {
|
|
81
|
+
try {
|
|
82
|
+
const integrations = await fetchCodeMieIntegrations(apiUrl, cookies);
|
|
83
|
+
const integration = integrations.find(i => i.alias === integrationAlias && i.credential_type === 'LiteLLM');
|
|
84
|
+
return !!integration;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error('Error validating integration alias:', error);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets all available integration types for debugging/informational purposes
|
|
93
|
+
*/
|
|
94
|
+
export async function getAvailableIntegrationTypes(apiUrl, cookies) {
|
|
95
|
+
try {
|
|
96
|
+
const integrations = await fetchCodeMieIntegrations(apiUrl, cookies);
|
|
97
|
+
const types = [...new Set(integrations.map(i => i.credential_type))];
|
|
98
|
+
return types.sort();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('Error fetching integration types:', error);
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=codemie-integration-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemie-integration-validator.js","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CodeMieIntegration } from '../types/sso.js';
|
|
2
|
+
export declare const CODEMIE_ENDPOINTS: {
|
|
3
|
+
readonly MODELS: "/v1/llm_models";
|
|
4
|
+
readonly USER_SETTINGS: "/v1/settings/user";
|
|
5
|
+
};
|
|
6
|
+
export declare function fetchCodeMieModels(apiUrl: string, cookies: Record<string, string>): Promise<string[]>;
|
|
7
|
+
export declare function fetchCodeMieModelsFromConfig(): Promise<string[]>;
|
|
8
|
+
export declare function fetchCodeMieIntegrations(apiUrl: string, cookies: Record<string, string>, endpointPath?: string): Promise<CodeMieIntegration[]>;
|
|
9
|
+
export declare function fetchCodeMieIntegrationsFromConfig(): Promise<CodeMieIntegration[]>;
|
|
10
|
+
export declare function validateCodeMieConnectivity(): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=codemie-model-fetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemie-model-fetcher.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-model-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,kBAAkB,EAA+B,MAAM,iBAAiB,CAAC;AAMhG,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CA4FnB;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAStE;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,YAAY,GAAE,MAAwC,GACrD,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyC/B;AA4GD,wBAAsB,kCAAkC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CASxF;AAED,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjE"}
|