@defai.digital/ax-cli 3.8.7 → 3.8.8
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 +28 -393
- package/config-defaults/settings.yaml +3 -0
- package/dist/agent/llm-agent.d.ts +11 -2
- package/dist/agent/llm-agent.js +73 -104
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/loop-detector.d.ts +70 -0
- package/dist/agent/loop-detector.js +339 -0
- package/dist/agent/loop-detector.js.map +1 -0
- package/dist/agent/progress-tracker.d.ts +94 -0
- package/dist/agent/progress-tracker.js +222 -0
- package/dist/agent/progress-tracker.js.map +1 -0
- package/dist/agent/status-reporter.js +2 -2
- package/dist/agent/status-reporter.js.map +1 -1
- package/dist/agent/subagent.js +3 -3
- package/dist/agent/subagent.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.js +2 -1
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/checkpoint/storage.js +6 -4
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/cache.js +8 -6
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/doctor.js +19 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp-migrate.js +6 -5
- package/dist/commands/mcp-migrate.js.map +1 -1
- package/dist/commands/models.js +8 -12
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/plan.js +1 -10
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/setup.js +2 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.js +4 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +16 -4
- package/dist/constants.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +138 -0
- package/dist/hooks/hook-runner.js +429 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +1 -19
- package/dist/index.js.map +1 -1
- package/dist/llm/tools.js +2 -39
- package/dist/llm/tools.js.map +1 -1
- package/dist/mcp/automatosx-loader.js +2 -1
- package/dist/mcp/automatosx-loader.js.map +1 -1
- package/dist/mcp/config-migrator.js +3 -2
- package/dist/mcp/config-migrator.js.map +1 -1
- package/dist/mcp/config-v2.d.ts +5 -0
- package/dist/mcp/config-v2.js +26 -0
- package/dist/mcp/config-v2.js.map +1 -1
- package/dist/mcp/error-formatter.js +4 -1
- package/dist/mcp/error-formatter.js.map +1 -1
- package/dist/mcp/reconnection.js +2 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/registry.js +3 -2
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/resources.js +2 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/validation.js +9 -0
- package/dist/mcp/validation.js.map +1 -1
- package/dist/memory/context-store.js +4 -6
- package/dist/memory/context-store.js.map +1 -1
- package/dist/memory/types.d.ts +2 -0
- package/dist/memory/types.js +4 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/index.d.ts +6 -0
- package/dist/permissions/index.js +7 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-manager.d.ts +145 -0
- package/dist/permissions/permission-manager.js +401 -0
- package/dist/permissions/permission-manager.js.map +1 -0
- package/dist/planner/task-planner.js +2 -1
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +0 -14
- package/dist/schemas/settings-schemas.js +0 -10
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/schemas/yaml-schemas.d.ts +15 -0
- package/dist/schemas/yaml-schemas.js +3 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/bash.js +6 -5
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/confirmation-tool.js +3 -2
- package/dist/tools/confirmation-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +2 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/todo-tool.js +3 -2
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +0 -6
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.js +7 -6
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.js +4 -4
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +1 -2
- package/dist/ui/utils/tool-grouper.js +4 -15
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/audit-logger.js +2 -1
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/encryption.js +2 -1
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/file-cache.js +4 -2
- package/dist/utils/file-cache.js.map +1 -1
- package/dist/utils/onboarding-manager.js +2 -1
- package/dist/utils/onboarding-manager.js.map +1 -1
- package/dist/utils/path-helpers.js +3 -2
- package/dist/utils/path-helpers.js.map +1 -1
- package/dist/utils/path-security.js +3 -2
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/settings-manager.d.ts +1 -21
- package/dist/utils/settings-manager.js +2 -82
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/streaming-analyzer.d.ts +2 -13
- package/dist/utils/streaming-analyzer.js +3 -25
- package/dist/utils/streaming-analyzer.js.map +1 -1
- package/dist/utils/token-counter.d.ts +8 -1
- package/dist/utils/token-counter.js +14 -5
- package/dist/utils/token-counter.js.map +1 -1
- package/package.json +3 -2
- package/packages/schemas/README.md +1 -1
- package/packages/schemas/package.json +1 -1
- package/.ax-cli/CUSTOM.md +0 -97
- package/.ax-cli/auto-accept-audit.json +0 -1302
- package/.ax-cli/index.json +0 -43
- package/.ax-cli/memory.json +0 -55
- package/.ax-cli/settings.json +0 -12
- package/ax.config.json +0 -303
- package/dist/tools/web-search/cache.d.ts +0 -62
- package/dist/tools/web-search/cache.js +0 -105
- package/dist/tools/web-search/cache.js.map +0 -1
- package/dist/tools/web-search/engines/crates.d.ts +0 -19
- package/dist/tools/web-search/engines/crates.js +0 -87
- package/dist/tools/web-search/engines/crates.js.map +0 -1
- package/dist/tools/web-search/engines/npm.d.ts +0 -18
- package/dist/tools/web-search/engines/npm.js +0 -86
- package/dist/tools/web-search/engines/npm.js.map +0 -1
- package/dist/tools/web-search/engines/pypi.d.ts +0 -18
- package/dist/tools/web-search/engines/pypi.js +0 -75
- package/dist/tools/web-search/engines/pypi.js.map +0 -1
- package/dist/tools/web-search/engines/stackoverflow.d.ts +0 -30
- package/dist/tools/web-search/engines/stackoverflow.js +0 -130
- package/dist/tools/web-search/engines/stackoverflow.js.map +0 -1
- package/dist/tools/web-search/engines/wikipedia.d.ts +0 -27
- package/dist/tools/web-search/engines/wikipedia.js +0 -112
- package/dist/tools/web-search/engines/wikipedia.js.map +0 -1
- package/dist/tools/web-search/index.d.ts +0 -11
- package/dist/tools/web-search/index.js +0 -11
- package/dist/tools/web-search/index.js.map +0 -1
- package/dist/tools/web-search/router.d.ts +0 -36
- package/dist/tools/web-search/router.js +0 -270
- package/dist/tools/web-search/router.js.map +0 -1
- package/dist/tools/web-search/types.d.ts +0 -45
- package/dist/tools/web-search/types.js +0 -6
- package/dist/tools/web-search/types.js.map +0 -1
- package/dist/tools/web-search/web-search-tool.d.ts +0 -51
- package/dist/tools/web-search/web-search-tool.js +0 -262
- package/dist/tools/web-search/web-search-tool.js.map +0 -1
- package/packages/schemas/dist/index.d.ts +0 -14
- package/packages/schemas/dist/index.d.ts.map +0 -1
- package/packages/schemas/dist/index.js +0 -19
- package/packages/schemas/dist/index.js.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
- package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.js +0 -243
- package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
- package/packages/schemas/dist/public/core/enums.d.ts +0 -227
- package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/enums.js +0 -222
- package/packages/schemas/dist/public/core/enums.js.map +0 -1
- package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
- package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/id-types.js +0 -136
- package/packages/schemas/dist/public/core/id-types.js.map +0 -1
package/.ax-cli/index.json
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"projectName": "@defai.digital/ax-cli",
|
|
3
|
-
"version": "3.8.4",
|
|
4
|
-
"primaryLanguage": "TypeScript",
|
|
5
|
-
"techStack": [
|
|
6
|
-
"React",
|
|
7
|
-
"Vitest",
|
|
8
|
-
"Zod",
|
|
9
|
-
"Commander",
|
|
10
|
-
"Ink",
|
|
11
|
-
"ESM",
|
|
12
|
-
"TypeScript"
|
|
13
|
-
],
|
|
14
|
-
"projectType": "cli",
|
|
15
|
-
"entryPoint": "dist/index.js",
|
|
16
|
-
"directories": {
|
|
17
|
-
"source": "src",
|
|
18
|
-
"tests": "tests",
|
|
19
|
-
"tools": "src/tools"
|
|
20
|
-
},
|
|
21
|
-
"keyFiles": [
|
|
22
|
-
"package.json",
|
|
23
|
-
"tsconfig.json",
|
|
24
|
-
"vitest.config.ts",
|
|
25
|
-
".eslintrc.js",
|
|
26
|
-
"README.md",
|
|
27
|
-
"CLAUDE.md"
|
|
28
|
-
],
|
|
29
|
-
"conventions": {
|
|
30
|
-
"moduleSystem": "esm",
|
|
31
|
-
"importExtension": ".js",
|
|
32
|
-
"testFramework": "vitest",
|
|
33
|
-
"validation": "zod"
|
|
34
|
-
},
|
|
35
|
-
"scripts": {
|
|
36
|
-
"build": "npm run build:schemas && tsc && chmod +x dist/index.js",
|
|
37
|
-
"test": "vitest run",
|
|
38
|
-
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
|
39
|
-
"dev": "tsx src/index.ts"
|
|
40
|
-
},
|
|
41
|
-
"packageManager": "npm",
|
|
42
|
-
"lastAnalyzed": "2025-11-24T12:27:22.444Z"
|
|
43
|
-
}
|
package/.ax-cli/memory.json
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"created_at": "2025-11-24T12:27:30.014Z",
|
|
4
|
-
"updated_at": "2025-11-24T12:27:30.014Z",
|
|
5
|
-
"project_root": "/Users/akiralam/code/ax-cli",
|
|
6
|
-
"content_hash": "sha256:a1ca38aa1296cde19426cb8ee2f4a08295689f90a1f179e6bebf8ba396ce1f55",
|
|
7
|
-
"source": {
|
|
8
|
-
"directories": [
|
|
9
|
-
{
|
|
10
|
-
"path": "src",
|
|
11
|
-
"max_depth": 3
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"path": "packages",
|
|
15
|
-
"max_depth": 2
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"files": [
|
|
19
|
-
"README.md",
|
|
20
|
-
"readme.md",
|
|
21
|
-
"package.json",
|
|
22
|
-
"tsconfig.json",
|
|
23
|
-
".ax-cli/CUSTOM.md"
|
|
24
|
-
],
|
|
25
|
-
"ignore": [
|
|
26
|
-
"node_modules",
|
|
27
|
-
"dist",
|
|
28
|
-
"build",
|
|
29
|
-
".git",
|
|
30
|
-
".next",
|
|
31
|
-
".nuxt",
|
|
32
|
-
"coverage",
|
|
33
|
-
".cache",
|
|
34
|
-
".turbo",
|
|
35
|
-
".vercel",
|
|
36
|
-
"__pycache__",
|
|
37
|
-
".pytest_cache",
|
|
38
|
-
"target",
|
|
39
|
-
"vendor",
|
|
40
|
-
"*.log",
|
|
41
|
-
"*.lock",
|
|
42
|
-
".DS_Store"
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
|
-
"context": {
|
|
46
|
-
"formatted": "# Project Context\n\n\n## Architecture Patterns\n- **Project Type**: cli\n- **Primary Language**: TypeScript\n- **Tech Stack**: React, Vitest, Zod, Commander, Ink, ESM, TypeScript\n- **Package Manager**: npm\n- **Entry Point**: dist/index.js\n- **Module System**: ESM\n- **Test Framework**: vitest\n- **Validation**: zod\n- **Linter**: eslint\n- **Key Directories**: source: src, tests: tests\n\n\n## Directory Structure\n```\nsrc/\n├── agent/\n│ ├── specialized/\n│ │ ├── analysis-agent.ts\n│ │ ├── debug-agent.ts\n│ │ ├── documentation-agent.ts\n│ │ ├── index.ts\n│ │ ├── performance-agent.ts\n│ │ ├── refactoring-agent.ts\n│ │ └── testing-agent.ts\n│ ├── context-manager.ts\n│ ├── dependency-resolver.ts\n│ ├── index.ts\n│ ├── llm-agent.ts\n│ ├── status-reporter.ts\n│ ├── subagent-orchestrator.ts\n│ ├── subagent-types.ts\n│ └── subagent.ts\n├── analyzers/\n│ ├── architecture/\n│ │ ├── anti-pattern-detectors/\n│ │ ├── pattern-detectors/\n│ │ ├── architecture-analyzer.ts\n│ │ ├── index.ts\n│ │ └── project-structure-scanner.ts\n│ ├── ast/\n│ │ ├── index.ts\n│ │ ├── node-helpers.ts\n│ │ ├── parser.ts\n│ │ ├── traverser.ts\n│ │ └── types.ts\n│ ├── best-practices/\n│ │ ├── rules/\n│ │ ├── base-rule.ts\n│ │ ├── best-practice-validator.ts\n│ │ ├── index.ts\n│ │ └── types.ts\n│ ├── cache/\n│ │ └── analysis-cache.ts\n│ ├── code-smells/\n│ │ ├── detectors/\n│ │ ├── base-smell-detector.ts\n│ │ ├── code-smell-analyzer.ts\n│ │ ├── index.ts\n│ │ └── types.ts\n│ ├── dependency/\n│ │ ├── circular-detector.ts\n│ │ ├── coupling-calculator.ts\n│ │ ├── dependency-analyzer.ts\n│ │ ├── dependency-graph.ts\n│ │ ├── index.ts\n│ │ └── types.ts\n│ ├── git/\n│ │ ├── churn-calculator.ts\n│ │ ├── git-analyzer.ts\n│ │ ├── hotspot-detector.ts\n│ │ ├── index.ts\n│ │ └── types.ts\n│ ├── metrics/\n│ │ ├── halstead-calculator.ts\n│ │ ├── index.ts\n│ │ ├── maintainability-calculator.ts\n│ │ ├── metrics-analyzer.ts\n│ │ └── types.ts\n│ ├── security/\n│ │ ├── detectors/\n│ │ ├── base-detector.ts\n│ │ ├── index.ts\n│ │ ├── security-analyzer.ts\n│ │ └── types.ts\n│ └── errors.ts\n├── checkpoint/\n│ ├── index.ts\n│ ├── manager.ts\n│ ├── storage.ts\n│ └── types.ts\n├── commands/\n│ ├── init/\n│ │ └── wizard.ts\n│ ├── cache.ts\n│ ├── doctor.ts\n│ ├── frontend.ts\n│ ├── init.ts\n│ ├── mcp-migrate.ts\n│ ├── mcp.ts\n│ ├── memory.ts\n│ ├── models.ts\n│ ├── plan.ts\n│ ├── rewind.ts\n│ ├── setup.ts\n│ ├── status.ts\n│ ├── templates.ts\n│ ├── update.ts\n│ ├── usage.ts\n│ └── vscode.ts\n├── llm/\n│ ├── client.ts\n│ ├── tools.ts\n│ └── types.ts\n├── mcp/\n│ ├── automatosx-loader.ts\n│ ├── client-mutex-patch.ts\n│ ├── client-v2.ts\n│ ├── client.ts\n│ ├── config-detector-v2.ts\n│ ├── config-detector.ts\n│ ├── config-migrator-v2.ts\n│ ├── config-migrator.ts\n│ ├── config-v2.ts\n│ ├── config.ts\n│ ├── content-length-transport.ts\n│ ├── error-formatter.ts\n│ ├── health.ts\n│ ├── invariants.ts\n│ ├── mutex-safe.ts\n│ ├── mutex.ts\n│ ├── reconnection.ts\n│ ├── registry.ts\n│ ├── resources.ts\n│ ├── ssrf-protection.ts\n│ ├── templates.ts\n│ ├── transports-v2.ts\n│ ├── transports.ts\n│ ├── type-safety.ts\n│ └── validation.ts\n├── memory/\n│ ├── context-generator.ts\n│ ├── context-injector.ts\n│ ├── context-store.ts\n│ ├── index.ts\n│ ├── schemas.ts\n│ ├── stats-collector.ts\n│ └── types.ts\n├── planner/\n│ ├── prompts/\n│ │ └── planning-prompt.ts\n│ ├── dependency-resolver.ts\n│ ├── index.ts\n│ ├── plan-generator.ts\n│ ├── plan-storage.ts\n│ ├── task-planner.ts\n│ ├── token-estimator.ts\n│ └── types.ts\n├── schemas/\n│ ├── api-schemas.ts\n│ ├── confirmation-schemas.ts\n│ ├── index-unified.ts\n│ ├── index.ts\n│ ├── README.md\n│ ├── settings-schemas.ts\n│ ├── tool-schemas.ts\n│ └── yaml-schemas.ts\n├── sdk/\n│ ├── errors.ts\n│ ├── index.ts\n│ ├── progress-reporter.ts\n│ ├── README.md\n│ ├── testing.ts\n│ ├── tool-registry.ts\n│ ├── types.ts\n│ ├── unified-logger.ts\n│ └── version.ts\n├── tools/\n│ ├── analysis-tools/\n│ │ ├── architecture-tool.ts\n│ │ └── validation-tool.ts\n│ ├── web-search/\n│ │ ├── engines/\n│ │ ├── cache.ts\n│ │ ├── index.ts\n│ │ ├── router.ts\n│ │ ├── types.ts\n│ │ └── web-search-tool.ts\n│ ├── analysis-tools.ts\n│ ├── bash-output.ts\n│ ├── bash.ts\n│ ├── confirmation-tool.ts\n│ ├── index.ts\n│ ├── registry.ts\n│ ├── search.ts\n│ ├── text-editor.ts\n│ └── todo-tool.ts\n├── types/\n│ ├── analysis.ts\n│ ├── index.ts\n│ ├── project-analysis.ts\n│ └── template.ts\n├── ui/\n│ ├── components/\n│ │ ├── api-key-input.tsx\n│ │ ├── chat-history.tsx\n│ │ ├── chat-input.tsx\n│ │ ├── chat-interface.tsx\n│ │ ├── collapsible-tool-result.tsx\n│ │ ├── command-suggestions.tsx\n│ │ ├── confirmation-dialog.tsx\n│ │ ├── context-breakdown.tsx\n│ │ ├── diff-renderer.tsx\n│ │ ├── index.ts\n│ │ ├── keyboard-help.tsx\n│ │ ├── keyboard-hints.tsx\n│ │ ├── loading-spinner.tsx\n│ │ ├── mcp-status.tsx\n│ │ ├── model-selection.tsx\n│ │ ├── phase-progress.tsx\n│ │ ├── quick-actions.tsx\n│ │ ├── reasoning-display.tsx\n│ │ ├── status-bar.tsx\n│ │ ├── subagent-monitor.tsx\n│ │ ├── toast-notification.tsx\n│ │ ├── tool-group-display.tsx\n│ │ ├── virtualized-chat-history.tsx\n│ │ └── welcome-panel.tsx\n│ ├── hooks/\n│ │ ├── use-chat-reducer.ts\n│ │ ├── use-enhanced-input.ts\n│ │ ├── use-input-handler.ts\n│ │ └── use-input-history.ts\n│ ├── shared/\n│ │ └── max-sized-box.tsx\n│ ├── utils/\n│ │ ├── bracketed-paste-handler.ts\n│ │ ├── change-summarizer.ts\n│ │ ├── code-colorizer.tsx\n│ │ ├── colors.ts\n│ │ ├── markdown-renderer.tsx\n│ │ └── tool-grouper.ts\n│ └── app.tsx\n├── utils/\n│ ├── analysis-logger.ts\n│ ├── audit-logger.ts\n│ ├── auto-accept-logger.ts\n│ ├── automatosx-detector.ts\n│ ├── background-task-manager.ts\n│ ├── cache.ts\n│ ├── command-security.ts\n│ ├── config-loader.ts\n│ ├── confirmation-service.ts\n│ ├── console-messenger.ts\n│ ├── custom-instructions.ts\n│ ├── encryption.ts\n│ ├── enhanced-error-messages.ts\n│ ├── error-handler.ts\n│ ├── error-sanitizer.ts\n│ ├── error-translator.ts\n│ ├── errors.ts\n│ ├── external-editor.ts\n│ ├── file-cache.ts\n│ ├── history-manager.ts\n│ ├── history-migration.ts\n│ ├── incremental-analyzer.ts\n│ ├── index.ts\n│ ├── init-previewer.ts\n│ ├── init-validator.ts\n│ ├── input-sanitizer.ts\n│ ├── instruction-generator.ts\n│ ├── json-utils.ts\n│ ├── llm-optimized-instruction-generator.ts\n│ ├── message-optimizer.ts\n│ └── ... (23 more)\n├── constants.ts\n└── index.ts\npackages/\n└── schemas/\n ├── src/\n ├── tests/\n ├── .eslintrc.js\n ├── package-lock.json\n ├── package.json\n ├── README.md\n ├── tsconfig.json\n └── vitest.config.ts\n```\n\n\n## Key Configuration\n\n### README.md\n\n```\n# AX CLI - Enterprise-Class CLI for GenAI coding\n\n[](https://npm-stat.com/charts.html?package=%40defai.digital%2Fax-cli)\n[](https://github.com/defai-digital/ax-cli/actions/workflows/test.yml)\n[](https://github.com/defai-\n...\n```\n\n### readme.md\n\n```\n# AX CLI - Enterprise-Class CLI for GenAI coding\n\n[](https://npm-stat.com/charts.html?package=%40defai.digital%2Fax-cli)\n[](https://github.com/defai-digital/ax-cli/actions/workflows/test.yml)\n[](https://github.com/defai-\n...\n```\n\n### package.json\n\n- **Name**: @defai.digital/ax-cli\n- **Version**: 3.8.4\n- **Description**: Enterprise-Class AI Command Line Interface - Primary support for GLM (General Language Model) with multi-provider AI orchestration powered by AutomatosX.\n- **Type**: module\n- **CLI**: Yes\n- **Dependencies**: @ax-cli/schemas, @clack/prompts, @modelcontextprotocol/sdk, axios, chalk, clipboardy, commander, dotenv, enquirer, fs-extra (+14 more)\n- **Dev Dependencies**: @types/fs-extra, @types/glob, @types/js-yaml, @types/marked-terminal, @types/node, @types/react, @typescript-eslint/eslint-plugin, @typescript-eslint/parser (+6 more)\n- **Scripts**: build, build:schemas, dev, start, lint, typecheck\n\n### tsconfig.json\n\n- **Target**: ES2022\n- **Module**: ESNext\n- **Module Resolution**: Bundler\n- **Strict**: true\n- **Output**: ./dist\n\n### .ax-cli/CUSTOM.md\n\n# Custom Instructions for AX CLI\n\n**Project**: @defai.digital/ax-cli v3.8.4\n**Type**: cli\n**Language**: TypeScript\n**Stack**: React, Vitest, Zod, Commander, Ink, ESM, TypeScript\n\nGenerated: 2025-11-24, 7:27:22 a.m.\n\n## Project Context\n\n- **Entry Point**: `dist/index.js`\n- **Package Manager**: npm\n- **Module System**: ESM\n- **CLI Tool**: This is a command-line interface application\n\n## Code Conventions\n\n### TypeScript\n- Use explicit type annotations for function parameters and returns\n- Prefer `const` and `let` over `var`\n- Use strict mode (strict type checking enabled)\n- **CRITICAL**: Always use `.js` extension in import statements (ESM requirement)\n - Example: `import { foo } from \"./bar.js\"` (NOT \"./bar\" or \"./bar.ts\")\n\n### ES Modules\n- Use `import/export` syntax (not `require/module.exports`)\n- Top-level await is supported\n\n### Validation\n- Use **zod** for runtime validation\n- Validate all external inputs (API requests, file reads, user input)\n- Use `.safeParse()` for error handlin\n[...truncated]\n\n\n## README Summary\n\n# AX CLI - Enterprise-Class CLI for GenAI coding\n\n[](https://npm-stat.com/charts.html?package=%40defai.digital%2Fax-cli)\n[](https://github.com/defai-digital/ax-cli/actions/workflows/test.yml)\n[](https://github.com/defai-digital/ax-cli)\n[](https://www.typescriptlang.org/)\n[](https://nodejs.org/)\n[](https://opensource.org/licenses/MIT)\n[](https://www.apple.com/macos/)\n[](https://www.microsoft.com/windows/)\n[](https://ubuntu.com/)\n\n\n\n<p align=\"center\">\n <strong>GLM-Optimized CLI • Enterprise Architecture • 98%+ Test Coverage • TypeScript & Zod</strong>\n</p>\n\n## 📋 Table of Contents\n\n- [🚀 Quick Start](#-quick-start)\n- [✨ Features](#-features)\n- [🎉 What's New](#-whats-new-in-v384)\n- [📦 Installation](#-installation)\n- [⚙️ Configuration](#️-configuration)\n- [🔒 Security](#-security--api-key-handling)\n- [🎯 Usage Examples](#-usage-examples)\n- [🌐 Web Search](#-web-search)\n- [🔌 MCP Integration](#-mcp-model-context-protocol)\n- [🧠 Project Memory](#-project-memory)\n- [🎯 Multi-Phase Planner](#-multi-phase-task-planner-v300)\n- [🏗️ Architecture](#️-architecture)\n- [📚 Documentation](#-documentation)\n- [📋 Changelog](#-changelog)\n\n---\n\n## 🚀 Quick Start\n\nGet up and running in under 2 minutes:\n\n```bash\n# 1️⃣ Install globally\nnpm install -g @defai.digital/ax-cli\n\n# 2️⃣ Configure (secure API key setup)\nax-cli setup\n\n# 3️⃣ Initialize your project\nax-cli init\n\n# 4️⃣ Start coding!\nax-cli\n```\n\n**That's it!** 🎉 AX CLI is now ready to help you build, debug, and ship code faster.\n\n**Need help?** Run `ax-cli --help` or check the [Usage Guide](#-usage-examples).\n\n## ✨ Features\n\n- **🤖 GLM-Focused AI CLI**: Optimized for Z.AI's GLM models (glm-4.6, glm-4-air, glm-4-airx)\n - **Note**: For xAI Grok models, use [grok-cli](https://github.com/superagent-ai/grok-cli)\n - **Note**: For Anthropic Claude models, use [claude-code](https://claude.ai/code)\n- **🧠 GLM 4.6 Optimized**: Primary support for General Language Model with advanced reasoning\n - **32K max tokens** (industry-standard, matches Claude Code CLI)\n - 200K context window, 128K max output capability\n - 30% more token efficient than GLM 4.5\n - Optimized for complex code generation and refactoring\n- **🎯 Multi-Phase Task Planner**: Intelligent task decomposition for complex requests\n - Automatic complexity detection (57 keyword patterns)\n - LLM-based plan generation with phases and dependencies\n - Phase-by-phase execution with progress tracking\n - File modification tracking and context pruning between phases\n - Plan management commands: `/plans`, `/plan`, `/phases`, `/pause`, `/resume`, `/skip`, `/abandon`\n- **🔄 Session Continuity**: Directory-specific conversation history with `--continue` flag\n - Preserve context across sessions for multi-day development\n - Each project maintains its own independent history\n - Seamlessly resume conversations where you left off\n- **🔌 Enhanced MCP Integration**: Model Context Protocol with production-ready templates\n - **One-command setup**: `ax-cli mcp add figma --template`\n - **12+ pre-configured templates**: Figma, GitHub, Vercel, Puppeteer, Storybook, Sentry, and more\n - **Tool discovery**: `ax-cli mcp tools <server>` to preview capabilities\n - **Template browser**: `ax-cli mcp browse` f\n\n[...truncated]",
|
|
47
|
-
"token_estimate": 4304,
|
|
48
|
-
"sections": {
|
|
49
|
-
"structure": 2157,
|
|
50
|
-
"readme": 1211,
|
|
51
|
-
"config": 831,
|
|
52
|
-
"patterns": 99
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
package/.ax-cli/settings.json
DELETED
package/ax.config.json
DELETED
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"providers": {
|
|
3
|
-
"claude-code": {
|
|
4
|
-
"enabled": true,
|
|
5
|
-
"priority": 3,
|
|
6
|
-
"timeout": 2700000,
|
|
7
|
-
"command": "claude",
|
|
8
|
-
"healthCheck": {
|
|
9
|
-
"enabled": true,
|
|
10
|
-
"interval": 300000,
|
|
11
|
-
"timeout": 5000
|
|
12
|
-
},
|
|
13
|
-
"circuitBreaker": {
|
|
14
|
-
"enabled": true,
|
|
15
|
-
"failureThreshold": 3,
|
|
16
|
-
"recoveryTimeout": 60000
|
|
17
|
-
},
|
|
18
|
-
"processManagement": {
|
|
19
|
-
"gracefulShutdownTimeout": 5000,
|
|
20
|
-
"forceKillDelay": 1000
|
|
21
|
-
},
|
|
22
|
-
"versionDetection": {
|
|
23
|
-
"timeout": 5000,
|
|
24
|
-
"forceKillDelay": 1000,
|
|
25
|
-
"cacheEnabled": true
|
|
26
|
-
},
|
|
27
|
-
"limitTracking": {
|
|
28
|
-
"enabled": true,
|
|
29
|
-
"window": "weekly",
|
|
30
|
-
"resetHourUtc": 0
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"gemini-cli": {
|
|
34
|
-
"enabled": true,
|
|
35
|
-
"priority": 2,
|
|
36
|
-
"timeout": 2700000,
|
|
37
|
-
"command": "gemini",
|
|
38
|
-
"healthCheck": {
|
|
39
|
-
"enabled": true,
|
|
40
|
-
"interval": 300000,
|
|
41
|
-
"timeout": 5000
|
|
42
|
-
},
|
|
43
|
-
"circuitBreaker": {
|
|
44
|
-
"enabled": true,
|
|
45
|
-
"failureThreshold": 3,
|
|
46
|
-
"recoveryTimeout": 60000
|
|
47
|
-
},
|
|
48
|
-
"processManagement": {
|
|
49
|
-
"gracefulShutdownTimeout": 5000,
|
|
50
|
-
"forceKillDelay": 1000
|
|
51
|
-
},
|
|
52
|
-
"versionDetection": {
|
|
53
|
-
"timeout": 5000,
|
|
54
|
-
"forceKillDelay": 1000,
|
|
55
|
-
"cacheEnabled": true
|
|
56
|
-
},
|
|
57
|
-
"limitTracking": {
|
|
58
|
-
"enabled": true,
|
|
59
|
-
"window": "daily",
|
|
60
|
-
"resetHourUtc": 0
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"openai": {
|
|
64
|
-
"enabled": true,
|
|
65
|
-
"priority": 1,
|
|
66
|
-
"timeout": 2700000,
|
|
67
|
-
"command": "codex",
|
|
68
|
-
"healthCheck": {
|
|
69
|
-
"enabled": true,
|
|
70
|
-
"interval": 300000,
|
|
71
|
-
"timeout": 5000
|
|
72
|
-
},
|
|
73
|
-
"circuitBreaker": {
|
|
74
|
-
"enabled": true,
|
|
75
|
-
"failureThreshold": 3,
|
|
76
|
-
"recoveryTimeout": 60000
|
|
77
|
-
},
|
|
78
|
-
"processManagement": {
|
|
79
|
-
"gracefulShutdownTimeout": 5000,
|
|
80
|
-
"forceKillDelay": 1000
|
|
81
|
-
},
|
|
82
|
-
"versionDetection": {
|
|
83
|
-
"timeout": 5000,
|
|
84
|
-
"forceKillDelay": 1000,
|
|
85
|
-
"cacheEnabled": true
|
|
86
|
-
},
|
|
87
|
-
"limitTracking": {
|
|
88
|
-
"enabled": true,
|
|
89
|
-
"window": "daily",
|
|
90
|
-
"resetHourUtc": 0
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
"execution": {
|
|
95
|
-
"defaultTimeout": 2700000,
|
|
96
|
-
"concurrency": {
|
|
97
|
-
"maxConcurrentAgents": 4,
|
|
98
|
-
"autoDetect": false,
|
|
99
|
-
"cpuMultiplier": 1,
|
|
100
|
-
"minConcurrency": 2,
|
|
101
|
-
"maxConcurrency": 16
|
|
102
|
-
},
|
|
103
|
-
"retry": {
|
|
104
|
-
"maxAttempts": 3,
|
|
105
|
-
"initialDelay": 1000,
|
|
106
|
-
"maxDelay": 10000,
|
|
107
|
-
"backoffFactor": 2,
|
|
108
|
-
"retryableErrors": [
|
|
109
|
-
"ECONNREFUSED",
|
|
110
|
-
"ETIMEDOUT",
|
|
111
|
-
"ENOTFOUND",
|
|
112
|
-
"rate_limit",
|
|
113
|
-
"overloaded",
|
|
114
|
-
"timeout"
|
|
115
|
-
]
|
|
116
|
-
},
|
|
117
|
-
"provider": {
|
|
118
|
-
"maxWaitMs": 60000,
|
|
119
|
-
"fallbackDelay": 5000
|
|
120
|
-
},
|
|
121
|
-
"stages": {
|
|
122
|
-
"enabled": true,
|
|
123
|
-
"defaultTimeout": 1800000,
|
|
124
|
-
"checkpointPath": ".automatosx/checkpoints",
|
|
125
|
-
"autoSaveCheckpoint": true,
|
|
126
|
-
"cleanupAfterDays": 7,
|
|
127
|
-
"retry": {
|
|
128
|
-
"defaultMaxRetries": 1,
|
|
129
|
-
"defaultRetryDelay": 2000
|
|
130
|
-
},
|
|
131
|
-
"prompts": {
|
|
132
|
-
"timeout": 600000,
|
|
133
|
-
"autoConfirm": false,
|
|
134
|
-
"locale": "en"
|
|
135
|
-
},
|
|
136
|
-
"progress": {
|
|
137
|
-
"updateInterval": 2000,
|
|
138
|
-
"syntheticProgress": true
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
"orchestration": {
|
|
143
|
-
"session": {
|
|
144
|
-
"maxSessions": 100,
|
|
145
|
-
"maxMetadataSize": 10240,
|
|
146
|
-
"saveDebounce": 1000,
|
|
147
|
-
"cleanupAfterDays": 7,
|
|
148
|
-
"maxUuidAttempts": 100,
|
|
149
|
-
"persistPath": ".automatosx/sessions"
|
|
150
|
-
},
|
|
151
|
-
"delegation": {
|
|
152
|
-
"maxDepth": 2,
|
|
153
|
-
"timeout": 2700000,
|
|
154
|
-
"enableCycleDetection": true
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
"memory": {
|
|
158
|
-
"maxEntries": 10000,
|
|
159
|
-
"persistPath": ".automatosx/memory",
|
|
160
|
-
"autoCleanup": true,
|
|
161
|
-
"cleanupDays": 30,
|
|
162
|
-
"busyTimeout": 5000,
|
|
163
|
-
"search": {
|
|
164
|
-
"defaultLimit": 10,
|
|
165
|
-
"maxLimit": 100,
|
|
166
|
-
"timeout": 5000
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
"abilities": {
|
|
170
|
-
"basePath": ".automatosx/abilities",
|
|
171
|
-
"fallbackPath": "examples/abilities",
|
|
172
|
-
"cache": {
|
|
173
|
-
"enabled": true,
|
|
174
|
-
"maxEntries": 50,
|
|
175
|
-
"ttl": 600000,
|
|
176
|
-
"maxSize": 5242880,
|
|
177
|
-
"cleanupInterval": 120000
|
|
178
|
-
},
|
|
179
|
-
"limits": {
|
|
180
|
-
"maxFileSize": 524288
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
"workspace": {
|
|
184
|
-
"prdPath": "automatosx/PRD",
|
|
185
|
-
"tmpPath": "automatosx/tmp",
|
|
186
|
-
"autoCleanupTmp": true,
|
|
187
|
-
"tmpCleanupDays": 7
|
|
188
|
-
},
|
|
189
|
-
"logging": {
|
|
190
|
-
"level": "info",
|
|
191
|
-
"path": ".automatosx/logs",
|
|
192
|
-
"console": true,
|
|
193
|
-
"retention": {
|
|
194
|
-
"maxSizeBytes": 104857600,
|
|
195
|
-
"maxAgeDays": 30,
|
|
196
|
-
"compress": true
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
"performance": {
|
|
200
|
-
"profileCache": {
|
|
201
|
-
"enabled": true,
|
|
202
|
-
"maxEntries": 20,
|
|
203
|
-
"ttl": 600000,
|
|
204
|
-
"cleanupInterval": 120000
|
|
205
|
-
},
|
|
206
|
-
"teamCache": {
|
|
207
|
-
"enabled": true,
|
|
208
|
-
"maxEntries": 10,
|
|
209
|
-
"ttl": 600000,
|
|
210
|
-
"cleanupInterval": 120000
|
|
211
|
-
},
|
|
212
|
-
"providerCache": {
|
|
213
|
-
"enabled": true,
|
|
214
|
-
"maxEntries": 100,
|
|
215
|
-
"ttl": 600000,
|
|
216
|
-
"cleanupInterval": 120000
|
|
217
|
-
},
|
|
218
|
-
"adaptiveCache": {
|
|
219
|
-
"maxEntries": 1000,
|
|
220
|
-
"baseTTL": 300000,
|
|
221
|
-
"minTTL": 60000,
|
|
222
|
-
"maxTTL": 3600000,
|
|
223
|
-
"adaptiveMultiplier": 2,
|
|
224
|
-
"lowFreqDivisor": 2,
|
|
225
|
-
"frequencyThreshold": 5,
|
|
226
|
-
"cleanupInterval": 60000
|
|
227
|
-
},
|
|
228
|
-
"responseCache": {
|
|
229
|
-
"enabled": false,
|
|
230
|
-
"ttl": 86400,
|
|
231
|
-
"maxSize": 1000,
|
|
232
|
-
"maxMemorySize": 100,
|
|
233
|
-
"dbPath": ".automatosx/cache/responses.db"
|
|
234
|
-
},
|
|
235
|
-
"rateLimit": {
|
|
236
|
-
"enabled": false,
|
|
237
|
-
"requestsPerMinute": 60,
|
|
238
|
-
"burstSize": 10
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
"advanced": {
|
|
242
|
-
"embedding": {
|
|
243
|
-
"timeout": 30000,
|
|
244
|
-
"retryDelay": 1000,
|
|
245
|
-
"dimensions": 1536,
|
|
246
|
-
"maxRetries": 3
|
|
247
|
-
},
|
|
248
|
-
"security": {
|
|
249
|
-
"enablePathValidation": true,
|
|
250
|
-
"allowedExtensions": [
|
|
251
|
-
".ts",
|
|
252
|
-
".js",
|
|
253
|
-
".tsx",
|
|
254
|
-
".jsx",
|
|
255
|
-
".py",
|
|
256
|
-
".go",
|
|
257
|
-
".rs",
|
|
258
|
-
".java",
|
|
259
|
-
".yaml",
|
|
260
|
-
".yml",
|
|
261
|
-
".json",
|
|
262
|
-
".toml",
|
|
263
|
-
".md",
|
|
264
|
-
".txt",
|
|
265
|
-
".csv"
|
|
266
|
-
]
|
|
267
|
-
},
|
|
268
|
-
"development": {
|
|
269
|
-
"mockProviders": false,
|
|
270
|
-
"profileMode": false
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
|
-
"integration": {
|
|
274
|
-
"vscode": {
|
|
275
|
-
"enabled": false,
|
|
276
|
-
"apiPort": 3000,
|
|
277
|
-
"autoStart": true,
|
|
278
|
-
"outputPanel": true,
|
|
279
|
-
"notifications": true
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
"cli": {
|
|
283
|
-
"run": {
|
|
284
|
-
"defaultMemory": true,
|
|
285
|
-
"defaultSaveMemory": true,
|
|
286
|
-
"defaultFormat": "text",
|
|
287
|
-
"defaultVerbose": false
|
|
288
|
-
},
|
|
289
|
-
"session": {
|
|
290
|
-
"defaultShowAgents": true
|
|
291
|
-
},
|
|
292
|
-
"memory": {
|
|
293
|
-
"defaultLimit": 10
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
"router": {
|
|
297
|
-
"healthCheckInterval": 60000,
|
|
298
|
-
"providerCooldownMs": 30000,
|
|
299
|
-
"enableFreeTierPrioritization": true,
|
|
300
|
-
"enableWorkloadAwareRouting": true
|
|
301
|
-
},
|
|
302
|
-
"version": "10.3.3"
|
|
303
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Search Cache
|
|
3
|
-
* In-memory cache for web search results
|
|
4
|
-
*/
|
|
5
|
-
import type { WebSearchResult } from "./types.js";
|
|
6
|
-
export interface CacheEntry {
|
|
7
|
-
query: string;
|
|
8
|
-
results: WebSearchResult[];
|
|
9
|
-
timestamp: number;
|
|
10
|
-
ttl: number;
|
|
11
|
-
}
|
|
12
|
-
export declare class SearchCache {
|
|
13
|
-
private cache;
|
|
14
|
-
private readonly DEFAULT_TTL;
|
|
15
|
-
private readonly MAX_KEYS;
|
|
16
|
-
constructor(ttl?: number, maxKeys?: number);
|
|
17
|
-
/**
|
|
18
|
-
* Generate cache key from query
|
|
19
|
-
*/
|
|
20
|
-
private getCacheKey;
|
|
21
|
-
/**
|
|
22
|
-
* Get cached results for a query
|
|
23
|
-
*/
|
|
24
|
-
get(query: string): WebSearchResult[] | null;
|
|
25
|
-
/**
|
|
26
|
-
* Cache search results for a query
|
|
27
|
-
*/
|
|
28
|
-
set(query: string, results: WebSearchResult[], ttl?: number): void;
|
|
29
|
-
/**
|
|
30
|
-
* Check if query has cached results
|
|
31
|
-
*/
|
|
32
|
-
has(query: string): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Clear specific query from cache
|
|
35
|
-
*/
|
|
36
|
-
delete(query: string): void;
|
|
37
|
-
/**
|
|
38
|
-
* Clear all cached results
|
|
39
|
-
*/
|
|
40
|
-
clear(): void;
|
|
41
|
-
/**
|
|
42
|
-
* Get cache statistics
|
|
43
|
-
*/
|
|
44
|
-
getStats(): {
|
|
45
|
-
keys: number;
|
|
46
|
-
hits: number;
|
|
47
|
-
misses: number;
|
|
48
|
-
hitRate: number;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Get all cached queries (for debugging)
|
|
52
|
-
*/
|
|
53
|
-
getCachedQueries(): string[];
|
|
54
|
-
/**
|
|
55
|
-
* Get cache entry with metadata
|
|
56
|
-
*/
|
|
57
|
-
getEntry(query: string): CacheEntry | null;
|
|
58
|
-
/**
|
|
59
|
-
* Get TTL for a cached query
|
|
60
|
-
*/
|
|
61
|
-
getTTL(query: string): number | undefined;
|
|
62
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Search Cache
|
|
3
|
-
* In-memory cache for web search results
|
|
4
|
-
*/
|
|
5
|
-
import NodeCache from "node-cache";
|
|
6
|
-
export class SearchCache {
|
|
7
|
-
cache;
|
|
8
|
-
DEFAULT_TTL = 300; // 5 minutes in seconds
|
|
9
|
-
MAX_KEYS = 500; // Maximum cache entries
|
|
10
|
-
constructor(ttl, maxKeys) {
|
|
11
|
-
this.cache = new NodeCache({
|
|
12
|
-
stdTTL: ttl || this.DEFAULT_TTL,
|
|
13
|
-
checkperiod: 60, // Check for expired entries every 60 seconds
|
|
14
|
-
maxKeys: maxKeys || this.MAX_KEYS,
|
|
15
|
-
useClones: true, // Prevent cache mutation/poisoning - safety over performance
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Generate cache key from query
|
|
20
|
-
*/
|
|
21
|
-
getCacheKey(query) {
|
|
22
|
-
return `search:${query.toLowerCase().trim()}`;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get cached results for a query
|
|
26
|
-
*/
|
|
27
|
-
get(query) {
|
|
28
|
-
const key = this.getCacheKey(query);
|
|
29
|
-
const entry = this.cache.get(key);
|
|
30
|
-
if (!entry) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
// Return the cached results
|
|
34
|
-
return entry.results;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Cache search results for a query
|
|
38
|
-
*/
|
|
39
|
-
set(query, results, ttl) {
|
|
40
|
-
const key = this.getCacheKey(query);
|
|
41
|
-
const effectiveTtl = ttl || this.DEFAULT_TTL;
|
|
42
|
-
const entry = {
|
|
43
|
-
query,
|
|
44
|
-
results,
|
|
45
|
-
timestamp: Date.now(),
|
|
46
|
-
ttl: effectiveTtl,
|
|
47
|
-
};
|
|
48
|
-
this.cache.set(key, entry, effectiveTtl);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check if query has cached results
|
|
52
|
-
*/
|
|
53
|
-
has(query) {
|
|
54
|
-
const key = this.getCacheKey(query);
|
|
55
|
-
return this.cache.has(key);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Clear specific query from cache
|
|
59
|
-
*/
|
|
60
|
-
delete(query) {
|
|
61
|
-
const key = this.getCacheKey(query);
|
|
62
|
-
this.cache.del(key);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Clear all cached results
|
|
66
|
-
*/
|
|
67
|
-
clear() {
|
|
68
|
-
this.cache.flushAll();
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get cache statistics
|
|
72
|
-
*/
|
|
73
|
-
getStats() {
|
|
74
|
-
const stats = this.cache.getStats();
|
|
75
|
-
const total = stats.hits + stats.misses;
|
|
76
|
-
const hitRate = total > 0 ? stats.hits / total : 0;
|
|
77
|
-
return {
|
|
78
|
-
keys: stats.keys,
|
|
79
|
-
hits: stats.hits,
|
|
80
|
-
misses: stats.misses,
|
|
81
|
-
hitRate: Math.round(hitRate * 100) / 100,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get all cached queries (for debugging)
|
|
86
|
-
*/
|
|
87
|
-
getCachedQueries() {
|
|
88
|
-
return this.cache.keys().map((key) => key.replace("search:", ""));
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get cache entry with metadata
|
|
92
|
-
*/
|
|
93
|
-
getEntry(query) {
|
|
94
|
-
const key = this.getCacheKey(query);
|
|
95
|
-
return this.cache.get(key) || null;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Get TTL for a cached query
|
|
99
|
-
*/
|
|
100
|
-
getTTL(query) {
|
|
101
|
-
const key = this.getCacheKey(query);
|
|
102
|
-
return this.cache.getTtl(key);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/tools/web-search/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* crates.io (Rust Crates) Search Engine
|
|
3
|
-
* Free, unlimited search for Rust crates
|
|
4
|
-
* No API key required
|
|
5
|
-
*/
|
|
6
|
-
import type { SearchEngine, WebSearchResult, SearchOptions } from "../types.js";
|
|
7
|
-
export declare class CratesSearch implements SearchEngine {
|
|
8
|
-
readonly name = "crates.io";
|
|
9
|
-
private baseUrl;
|
|
10
|
-
private timeout;
|
|
11
|
-
/**
|
|
12
|
-
* Always available - no API key required
|
|
13
|
-
*/
|
|
14
|
-
isAvailable(): boolean;
|
|
15
|
-
search(query: string, options?: SearchOptions): Promise<WebSearchResult[]>;
|
|
16
|
-
private formatResults;
|
|
17
|
-
private createSnippet;
|
|
18
|
-
private calculateScore;
|
|
19
|
-
}
|