@contractspec/bundle.workspace 1.52.0 → 1.54.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/dist/adapters/ai.d.mts +2 -2
- package/dist/adapters/ai.d.mts.map +1 -1
- package/dist/adapters/ai.mjs.map +1 -1
- package/dist/adapters/factory.d.mts +2 -2
- package/dist/adapters/factory.d.mts.map +1 -1
- package/dist/adapters/factory.mjs +3 -14
- package/dist/adapters/factory.mjs.map +1 -1
- package/dist/adapters/fs.bun.d.mts +11 -0
- package/dist/adapters/fs.bun.d.mts.map +1 -0
- package/dist/adapters/fs.bun.mjs +81 -0
- package/dist/adapters/fs.bun.mjs.map +1 -0
- package/dist/adapters/fs.d.mts +2 -8
- package/dist/adapters/fs.d.mts.map +1 -1
- package/dist/adapters/fs.mjs +4 -88
- package/dist/adapters/fs.mjs.map +1 -1
- package/dist/adapters/fs.node.d.mts +11 -0
- package/dist/adapters/fs.node.d.mts.map +1 -0
- package/dist/adapters/fs.node.mjs +84 -0
- package/dist/adapters/fs.node.mjs.map +1 -0
- package/dist/adapters/index.d.mts +3 -1
- package/dist/adapters/index.mjs +3 -1
- package/dist/ai/agents/index.d.mts +6 -0
- package/dist/ai/agents/orchestrator.d.mts +4 -4
- package/dist/ai/agents/orchestrator.d.mts.map +1 -1
- package/dist/ai/agents/orchestrator.mjs +5 -0
- package/dist/ai/agents/orchestrator.mjs.map +1 -1
- package/dist/ai/agents/simple-agent.d.mts +2 -2
- package/dist/ai/agents/simple-agent.d.mts.map +1 -1
- package/dist/ai/agents/simple-agent.mjs.map +1 -1
- package/dist/ai/agents/types.d.mts +4 -5
- package/dist/ai/agents/types.d.mts.map +1 -1
- package/dist/ai/agents/unified-adapter.mjs +70 -0
- package/dist/ai/agents/unified-adapter.mjs.map +1 -0
- package/dist/ai/index.d.mts +3 -3
- package/dist/ai/index.mjs +1 -2
- package/dist/ai/prompts/spec-creation.mjs +1 -1
- package/dist/ai/providers.d.mts +3 -18
- package/dist/ai/providers.d.mts.map +1 -1
- package/dist/ai/providers.mjs +2 -22
- package/dist/ai/providers.mjs.map +1 -1
- package/dist/index.d.mts +13 -8
- package/dist/index.mjs +11 -7
- package/dist/ports/ai.d.mts +7 -3
- package/dist/ports/ai.d.mts.map +1 -1
- package/dist/ports/index.d.mts +1 -1
- package/dist/registry.d.mts +15 -0
- package/dist/registry.d.mts.map +1 -0
- package/dist/registry.mjs +19 -0
- package/dist/registry.mjs.map +1 -0
- package/dist/services/action-drift/service.d.mts +11 -0
- package/dist/services/action-drift/service.d.mts.map +1 -0
- package/dist/services/action-drift/service.mjs +43 -0
- package/dist/services/action-drift/service.mjs.map +1 -0
- package/dist/services/action-drift/types.d.mts +23 -0
- package/dist/services/action-drift/types.d.mts.map +1 -0
- package/dist/services/action-pr/service.d.mts +17 -0
- package/dist/services/action-pr/service.d.mts.map +1 -0
- package/dist/services/action-pr/service.mjs +205 -0
- package/dist/services/action-pr/service.mjs.map +1 -0
- package/dist/services/action-pr/types.d.mts +67 -0
- package/dist/services/action-pr/types.d.mts.map +1 -0
- package/dist/services/build.d.mts +3 -2
- package/dist/services/build.d.mts.map +1 -1
- package/dist/services/build.mjs.map +1 -1
- package/dist/services/ci-check/checks/coverage.mjs +30 -41
- package/dist/services/ci-check/checks/coverage.mjs.map +1 -1
- package/dist/services/ci-check/checks/handlers.mjs +3 -3
- package/dist/services/ci-check/checks/handlers.mjs.map +1 -1
- package/dist/services/ci-check/checks/implementation.mjs +1 -1
- package/dist/services/ci-check/checks/implementation.mjs.map +1 -1
- package/dist/services/ci-check/checks/structure.mjs +5 -6
- package/dist/services/ci-check/checks/structure.mjs.map +1 -1
- package/dist/services/ci-check/checks/test-refs.mjs +19 -29
- package/dist/services/ci-check/checks/test-refs.mjs.map +1 -1
- package/dist/services/ci-check/checks/tests.mjs +3 -3
- package/dist/services/ci-check/checks/tests.mjs.map +1 -1
- package/dist/services/ci-check/ci-check-service.d.mts.map +1 -1
- package/dist/services/ci-check/ci-check-service.mjs +7 -12
- package/dist/services/ci-check/ci-check-service.mjs.map +1 -1
- package/dist/services/config.d.mts +3 -3
- package/dist/services/config.d.mts.map +1 -1
- package/dist/services/config.mjs +12 -34
- package/dist/services/config.mjs.map +1 -1
- package/dist/services/create/ai-generator.d.mts +3 -3
- package/dist/services/create/ai-generator.d.mts.map +1 -1
- package/dist/services/create/ai-generator.mjs +1 -1
- package/dist/services/create/ai-generator.mjs.map +1 -1
- package/dist/services/create/index.d.mts +4 -4
- package/dist/services/create/index.d.mts.map +1 -1
- package/dist/services/create/index.mjs.map +1 -1
- package/dist/services/docs/docs-service.mjs +16 -13
- package/dist/services/docs/docs-service.mjs.map +1 -1
- package/dist/services/extract.mjs +2 -10
- package/dist/services/extract.mjs.map +1 -1
- package/dist/services/implementation/discovery.d.mts.map +1 -1
- package/dist/services/implementation/discovery.mjs +6 -14
- package/dist/services/implementation/discovery.mjs.map +1 -1
- package/dist/services/implementation/index.d.mts +1 -1
- package/dist/services/implementation/index.mjs +1 -1
- package/dist/services/implementation/resolver/index.d.mts +8 -6
- package/dist/services/implementation/resolver/index.d.mts.map +1 -1
- package/dist/services/implementation/resolver/index.mjs +33 -31
- package/dist/services/implementation/resolver/index.mjs.map +1 -1
- package/dist/services/implementation/resolver/parsers.d.mts +1 -5
- package/dist/services/implementation/resolver/parsers.d.mts.map +1 -1
- package/dist/services/implementation/resolver/parsers.mjs +1 -19
- package/dist/services/implementation/resolver/parsers.mjs.map +1 -1
- package/dist/services/implementation/types.d.mts +3 -1
- package/dist/services/implementation/types.d.mts.map +1 -1
- package/dist/services/index.d.mts +5 -1
- package/dist/services/index.mjs +4 -2
- package/dist/services/list.d.mts +4 -3
- package/dist/services/list.d.mts.map +1 -1
- package/dist/services/list.mjs +4 -2
- package/dist/services/list.mjs.map +1 -1
- package/dist/services/sync.d.mts +2 -2
- package/dist/services/sync.d.mts.map +1 -1
- package/dist/services/sync.mjs.map +1 -1
- package/dist/services/test/test-generator-service.d.mts +1 -1
- package/dist/services/test/test-service.mjs +1 -1
- package/dist/services/validate/blueprint-validator.mjs +1 -1
- package/dist/services/validate/implementation-agent-validator.d.mts +2 -2
- package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -1
- package/dist/services/validate/implementation-agent-validator.mjs.map +1 -1
- package/dist/services/validate/implementation-validator.d.mts +4 -3
- package/dist/services/validate/implementation-validator.d.mts.map +1 -1
- package/dist/services/validate/implementation-validator.mjs +4 -13
- package/dist/services/validate/implementation-validator.mjs.map +1 -1
- package/dist/services/validate/spec-validator.d.mts +1 -1
- package/dist/services/validate/spec-validator.d.mts.map +1 -1
- package/dist/services/validate/spec-validator.mjs +11 -7
- package/dist/services/validate/spec-validator.mjs.map +1 -1
- package/dist/services/validate/tenant-validator.mjs +1 -1
- package/dist/services/watch.d.mts +2 -2
- package/dist/services/watch.d.mts.map +1 -1
- package/dist/services/watch.mjs.map +1 -1
- package/dist/utils/filter.d.mts +10 -1
- package/dist/utils/filter.d.mts.map +1 -1
- package/dist/utils/filter.mjs +28 -1
- package/dist/utils/filter.mjs.map +1 -1
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs +2 -1
- package/package.json +14 -12
- package/dist/ai/client.d.mts +0 -97
- package/dist/ai/client.d.mts.map +0 -1
- package/dist/ai/client.mjs +0 -189
- package/dist/ai/client.mjs.map +0 -1
- package/dist/types/config.d.mts +0 -34
- package/dist/types/config.d.mts.map +0 -1
package/dist/adapters/ai.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AiAdapter } from "../ports/ai.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/adapters/ai.d.ts
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Create a Node.js AI adapter using Vercel AI SDK.
|
|
8
8
|
*/
|
|
9
|
-
declare function createNodeAiAdapter(config:
|
|
9
|
+
declare function createNodeAiAdapter(config: ResolvedContractsrcConfig): AiAdapter;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { createNodeAiAdapter };
|
|
12
12
|
//# sourceMappingURL=ai.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.mts","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":[],"mappings":";;;;;;;;iBAqBgB,mBAAA,
|
|
1
|
+
{"version":3,"file":"ai.d.mts","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":[],"mappings":";;;;;;;;iBAqBgB,mBAAA,SACN,4BACP"}
|
package/dist/adapters/ai.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.mjs","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":["/**\n * Node.js AI adapter implementation using Vercel AI SDK.\n */\n\nimport { anthropic } from '@ai-sdk/anthropic';\nimport { openai } from '@ai-sdk/openai';\nimport { ollama } from 'ollama-ai-provider';\nimport type { LanguageModel } from 'ai';\nimport { generateObject, generateText, streamText } from 'ai';\nimport type {
|
|
1
|
+
{"version":3,"file":"ai.mjs","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":["/**\n * Node.js AI adapter implementation using Vercel AI SDK.\n */\n\nimport { anthropic } from '@ai-sdk/anthropic';\nimport { openai } from '@ai-sdk/openai';\nimport { ollama } from 'ollama-ai-provider';\nimport type { LanguageModel } from 'ai';\nimport { generateObject, generateText, streamText } from 'ai';\nimport type {\n AiAdapter,\n AiGenerateOptions,\n AiGenerateResult,\n AiGenerateStructuredOptions,\n AiValidationResult,\n} from '../ports/ai';\nimport type { ResolvedContractsrcConfig } from '@contractspec/lib.contracts';\n\n/**\n * Create a Node.js AI adapter using Vercel AI SDK.\n */\nexport function createNodeAiAdapter(\n config: ResolvedContractsrcConfig\n): AiAdapter {\n return {\n async validateProvider(\n providerConfig: ResolvedContractsrcConfig\n ): Promise<AiValidationResult> {\n try {\n const { aiProvider } = providerConfig;\n\n // For Ollama, we can't easily validate without making a request\n if (aiProvider === 'ollama') {\n return { success: true };\n }\n\n // For cloud providers, check API key exists\n if (aiProvider === 'claude' && !process.env['ANTHROPIC_API_KEY']) {\n return {\n success: false,\n error: 'ANTHROPIC_API_KEY environment variable not set',\n };\n }\n\n if (aiProvider === 'openai' && !process.env['OPENAI_API_KEY']) {\n return {\n success: false,\n error: 'OPENAI_API_KEY environment variable not set',\n };\n }\n\n return { success: true };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n\n async generateText(options: AiGenerateOptions): Promise<AiGenerateResult> {\n const model = getAIProvider(config);\n\n const result = await generateText({\n model,\n prompt: options.prompt,\n system: options.systemPrompt,\n });\n\n return { text: result.text };\n },\n\n async generateStructured<T>(\n options: AiGenerateStructuredOptions<T>\n ): Promise<{ object: T }> {\n const model = getAIProvider(config);\n\n // Use generateObject with schema cast to expected type\n const generateObjectOptions = {\n model,\n schema: options.schema,\n prompt: options.prompt,\n system: options.systemPrompt,\n };\n\n const result = await generateObject(\n generateObjectOptions as Parameters<typeof generateObject>[0]\n );\n\n return { object: result.object as T };\n },\n\n async streamText(\n options: AiGenerateOptions,\n onChunk: (text: string) => void\n ): Promise<string> {\n const model = getAIProvider(config);\n\n const result = await streamText({\n model,\n prompt: options.prompt,\n system: options.systemPrompt,\n });\n\n let fullText = '';\n\n for await (const chunk of result.textStream) {\n fullText += chunk;\n onChunk(chunk);\n }\n\n return fullText;\n },\n };\n}\n\n/**\n * Get AI provider based on configuration.\n */\nfunction getAIProvider(config: ResolvedContractsrcConfig): LanguageModel {\n const { aiProvider, aiModel, customEndpoint } = config;\n\n switch (aiProvider) {\n case 'claude': {\n const model = aiModel ?? 'claude-3-5-sonnet-20241022';\n return anthropic(model);\n }\n\n case 'openai': {\n const model = aiModel ?? 'gpt-4o';\n return openai(model);\n }\n\n case 'ollama': {\n const model = aiModel ?? 'codellama';\n // ollama-ai-provider returns LanguageModelV1, wrap it to satisfy LanguageModel interface\n const ollamaModel = ollama(model);\n // Return as unknown then LanguageModel to bypass strict type checking\n // This is safe because ollama models are compatible at runtime\n return ollamaModel as unknown as LanguageModel;\n }\n\n case 'custom': {\n if (!customEndpoint) {\n throw new Error(\n 'Custom endpoint required. Set customEndpoint in config or CONTRACTSPEC_LLM_ENDPOINT env var'\n );\n }\n\n const model = aiModel ?? 'default';\n // For custom endpoints, use openai with environment variable for baseURL\n return openai(model);\n }\n\n default:\n throw new Error(`Unknown AI provider: ${aiProvider}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,SAAgB,oBACd,QACW;AACX,QAAO;EACL,MAAM,iBACJ,gBAC6B;AAC7B,OAAI;IACF,MAAM,EAAE,eAAe;AAGvB,QAAI,eAAe,SACjB,QAAO,EAAE,SAAS,MAAM;AAI1B,QAAI,eAAe,YAAY,CAAC,QAAQ,IAAI,qBAC1C,QAAO;KACL,SAAS;KACT,OAAO;KACR;AAGH,QAAI,eAAe,YAAY,CAAC,QAAQ,IAAI,kBAC1C,QAAO;KACL,SAAS;KACT,OAAO;KACR;AAGH,WAAO,EAAE,SAAS,MAAM;YACjB,OAAO;AACd,WAAO;KACL,SAAS;KACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;KAC9D;;;EAIL,MAAM,aAAa,SAAuD;AASxE,UAAO,EAAE,OANM,MAAM,aAAa;IAChC,OAHY,cAAc,OAAO;IAIjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAAC,EAEoB,MAAM;;EAG9B,MAAM,mBACJ,SACwB;AAexB,UAAO,EAAE,SAJM,MAAM,eAPS;IAC5B,OAJY,cAAc,OAAO;IAKjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAIA,EAEuB,QAAa;;EAGvC,MAAM,WACJ,SACA,SACiB;GAGjB,MAAM,SAAS,MAAM,WAAW;IAC9B,OAHY,cAAc,OAAO;IAIjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAAC;GAEF,IAAI,WAAW;AAEf,cAAW,MAAM,SAAS,OAAO,YAAY;AAC3C,gBAAY;AACZ,YAAQ,MAAM;;AAGhB,UAAO;;EAEV;;;;;AAMH,SAAS,cAAc,QAAkD;CACvE,MAAM,EAAE,YAAY,SAAS,mBAAmB;AAEhD,SAAQ,YAAR;EACE,KAAK,SAEH,QAAO,UADO,WAAW,6BACF;EAGzB,KAAK,SAEH,QAAO,OADO,WAAW,SACL;EAGtB,KAAK,SAMH,QAHoB,OAFN,WAAW,YAEQ;EAMnC,KAAK;AACH,OAAI,CAAC,eACH,OAAM,IAAI,MACR,8FACD;AAKH,UAAO,OAFO,WAAW,UAEL;EAGtB,QACE,OAAM,IAAI,MAAM,wBAAwB,aAAa"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WorkspaceAdapters } from "../ports/logger.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/adapters/factory.d.ts
|
|
5
5
|
|
|
@@ -14,7 +14,7 @@ interface CreateAdaptersOptions {
|
|
|
14
14
|
/**
|
|
15
15
|
* Workspace configuration for AI.
|
|
16
16
|
*/
|
|
17
|
-
config?:
|
|
17
|
+
config?: ResolvedContractsrcConfig;
|
|
18
18
|
/**
|
|
19
19
|
* Use no-op logger (for testing).
|
|
20
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.mts","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"factory.d.mts","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":[],"mappings":";;;;;AAsCA;;;UApBiB,qBAAA;;;;;;;;WASN;;;;;;;;;iBAWK,kBAAA,WACL,wBACR"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { createNodeFsAdapter } from "./fs.mjs";
|
|
1
|
+
import { createNodeFsAdapter } from "./fs.node.mjs";
|
|
2
2
|
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
3
|
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
4
|
import { createNodeAiAdapter } from "./ai.mjs";
|
|
5
5
|
import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./logger.mjs";
|
|
6
|
+
import { DEFAULT_CONTRACTSRC } from "@contractspec/lib.contracts";
|
|
6
7
|
|
|
7
8
|
//#region src/adapters/factory.ts
|
|
8
9
|
/**
|
|
@@ -10,19 +11,7 @@ import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./logger.mj
|
|
|
10
11
|
*/
|
|
11
12
|
function createNodeAdapters(options = {}) {
|
|
12
13
|
const { cwd, config, silent } = options;
|
|
13
|
-
const workspaceConfig = config ??
|
|
14
|
-
aiProvider: "claude",
|
|
15
|
-
agentMode: "simple",
|
|
16
|
-
outputDir: "./src",
|
|
17
|
-
conventions: {
|
|
18
|
-
operations: "interactions/commands|queries",
|
|
19
|
-
events: "events",
|
|
20
|
-
presentations: "presentations",
|
|
21
|
-
forms: "forms"
|
|
22
|
-
},
|
|
23
|
-
defaultOwners: [],
|
|
24
|
-
defaultTags: []
|
|
25
|
-
};
|
|
14
|
+
const workspaceConfig = config ?? DEFAULT_CONTRACTSRC;
|
|
26
15
|
return {
|
|
27
16
|
fs: createNodeFsAdapter(cwd),
|
|
28
17
|
git: createNodeGitAdapter(cwd),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.mjs","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":["/**\n * Factory for creating workspace adapters.\n */\n\nimport type {
|
|
1
|
+
{"version":3,"file":"factory.mjs","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":["/**\n * Factory for creating workspace adapters.\n */\n\nimport type { WorkspaceAdapters } from '../ports/logger';\nimport { createNodeFsAdapter } from './fs.node';\nimport { createNodeGitAdapter } from './git';\nimport { createNodeWatcherAdapter } from './watcher';\nimport { createNodeAiAdapter } from './ai';\nimport { createConsoleLoggerAdapter, createNoopLoggerAdapter } from './logger';\nimport {\n DEFAULT_CONTRACTSRC,\n type ResolvedContractsrcConfig,\n} from '@contractspec/lib.contracts';\n\n/**\n * Options for creating adapters.\n */\nexport interface CreateAdaptersOptions {\n /**\n * Working directory for file operations.\n */\n cwd?: string;\n\n /**\n * Workspace configuration for AI.\n */\n config?: ResolvedContractsrcConfig;\n\n /**\n * Use no-op logger (for testing).\n */\n silent?: boolean;\n}\n\n/**\n * Create all Node.js adapters with default configuration.\n */\nexport function createNodeAdapters(\n options: CreateAdaptersOptions = {}\n): WorkspaceAdapters {\n const { cwd, config, silent } = options;\n\n // Use default config if not provided\n const workspaceConfig = config ?? DEFAULT_CONTRACTSRC;\n\n return {\n fs: createNodeFsAdapter(cwd),\n git: createNodeGitAdapter(cwd),\n watcher: createNodeWatcherAdapter(cwd),\n ai: createNodeAiAdapter(workspaceConfig),\n logger: silent ? createNoopLoggerAdapter() : createConsoleLoggerAdapter(),\n };\n}\n"],"mappings":";;;;;;;;;;;AAsCA,SAAgB,mBACd,UAAiC,EAAE,EAChB;CACnB,MAAM,EAAE,KAAK,QAAQ,WAAW;CAGhC,MAAM,kBAAkB,UAAU;AAElC,QAAO;EACL,IAAI,oBAAoB,IAAI;EAC5B,KAAK,qBAAqB,IAAI;EAC9B,SAAS,yBAAyB,IAAI;EACtC,IAAI,oBAAoB,gBAAgB;EACxC,QAAQ,SAAS,yBAAyB,GAAG,4BAA4B;EAC1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FsAdapter } from "../ports/fs.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/fs.bun.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a Bun filesystem adapter.
|
|
7
|
+
*/
|
|
8
|
+
declare function createBunFsAdapter(cwd?: string): FsAdapter;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { createBunFsAdapter };
|
|
11
|
+
//# sourceMappingURL=fs.bun.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.bun.d.mts","names":[],"sources":["../../src/adapters/fs.bun.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAoBgB,kBAAA,gBAAkC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./fs.mjs";
|
|
2
|
+
import { mkdir, stat } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
4
|
+
import { glob } from "glob";
|
|
5
|
+
|
|
6
|
+
//#region src/adapters/fs.bun.ts
|
|
7
|
+
/**
|
|
8
|
+
* Node.js filesystem adapter implementation.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Create a Bun filesystem adapter.
|
|
12
|
+
*/
|
|
13
|
+
function createBunFsAdapter(cwd) {
|
|
14
|
+
const baseCwd = cwd ?? process.cwd();
|
|
15
|
+
return {
|
|
16
|
+
async exists(path$1) {
|
|
17
|
+
const file = Bun.file(resolvePath(path$1));
|
|
18
|
+
try {
|
|
19
|
+
await file.exists();
|
|
20
|
+
return true;
|
|
21
|
+
} catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
async readFile(path$1) {
|
|
26
|
+
return Bun.file(resolvePath(path$1)).text();
|
|
27
|
+
},
|
|
28
|
+
async writeFile(path$1, content) {
|
|
29
|
+
const fullPath = resolvePath(path$1);
|
|
30
|
+
await Bun.write(fullPath, content);
|
|
31
|
+
},
|
|
32
|
+
async remove(path$1) {
|
|
33
|
+
await Bun.file(resolvePath(path$1)).delete();
|
|
34
|
+
},
|
|
35
|
+
async stat(path$1) {
|
|
36
|
+
const stats = await stat(resolvePath(path$1));
|
|
37
|
+
return {
|
|
38
|
+
size: stats.size,
|
|
39
|
+
isFile: stats.isFile(),
|
|
40
|
+
isDirectory: stats.isDirectory(),
|
|
41
|
+
mtime: stats.mtime
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
async mkdir(path$1) {
|
|
45
|
+
await mkdir(resolvePath(path$1), { recursive: true });
|
|
46
|
+
},
|
|
47
|
+
async glob(options) {
|
|
48
|
+
const patterns = options.patterns ?? (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);
|
|
49
|
+
const ignore = options.ignore ?? DEFAULT_FS_IGNORES;
|
|
50
|
+
return await glob(patterns, {
|
|
51
|
+
cwd: options.cwd ?? baseCwd,
|
|
52
|
+
ignore,
|
|
53
|
+
absolute: options.absolute ?? true
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
resolve(...paths) {
|
|
57
|
+
const [first, ...rest] = paths;
|
|
58
|
+
if (!first) return baseCwd;
|
|
59
|
+
return resolve(baseCwd, first, ...rest);
|
|
60
|
+
},
|
|
61
|
+
dirname(path$1) {
|
|
62
|
+
return dirname(path$1);
|
|
63
|
+
},
|
|
64
|
+
basename(path$1) {
|
|
65
|
+
return basename(path$1);
|
|
66
|
+
},
|
|
67
|
+
join(...paths) {
|
|
68
|
+
return join(...paths);
|
|
69
|
+
},
|
|
70
|
+
relative(from, to) {
|
|
71
|
+
return relative(from, to);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
function resolvePath(path$1) {
|
|
75
|
+
return isAbsolute(path$1) ? path$1 : resolve(baseCwd, path$1);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
export { createBunFsAdapter };
|
|
81
|
+
//# sourceMappingURL=fs.bun.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.bun.mjs","names":["path","fsStat","globFn"],"sources":["../../src/adapters/fs.bun.ts"],"sourcesContent":["/**\n * Node.js filesystem adapter implementation.\n */\n\nimport { mkdir, stat as fsStat } from 'node:fs/promises';\nimport {\n basename,\n dirname,\n isAbsolute,\n join,\n relative,\n resolve,\n} from 'node:path';\nimport type { DiscoverOptions, FileStat, FsAdapter } from '../ports/fs';\nimport { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from './fs';\nimport { glob as globFn } from 'glob';\n\n/**\n * Create a Bun filesystem adapter.\n */\nexport function createBunFsAdapter(cwd?: string): FsAdapter {\n const baseCwd = cwd ?? process.cwd();\n\n return {\n async exists(path: string): Promise<boolean> {\n const file = Bun.file(resolvePath(path));\n try {\n await file.exists();\n return true;\n } catch {\n return false;\n }\n },\n\n async readFile(path: string): Promise<string> {\n const file = Bun.file(resolvePath(path));\n return file.text();\n },\n\n async writeFile(path: string, content: string): Promise<void> {\n const fullPath = resolvePath(path);\n await Bun.write(fullPath, content);\n },\n\n async remove(path: string): Promise<void> {\n const file = Bun.file(resolvePath(path));\n await file.delete();\n },\n\n async stat(path: string): Promise<FileStat> {\n const stats = await fsStat(resolvePath(path));\n return {\n size: stats.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n mtime: stats.mtime,\n };\n },\n\n async mkdir(path: string): Promise<void> {\n await mkdir(resolvePath(path), { recursive: true });\n },\n\n async glob(options: DiscoverOptions): Promise<string[]> {\n const patterns =\n options.patterns ??\n (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);\n const ignore = options.ignore ?? DEFAULT_FS_IGNORES;\n // Use provided cwd or fall back to adapter's baseCwd\n const globCwd = options.cwd ?? baseCwd;\n // Default to absolute paths for safer file operations\n const absolute = options.absolute ?? true;\n\n const matches = await globFn(patterns, {\n cwd: globCwd,\n ignore,\n absolute,\n });\n\n return matches;\n },\n\n resolve(...paths: string[]): string {\n const [first, ...rest] = paths;\n if (!first) return baseCwd;\n return resolve(baseCwd, first, ...rest);\n },\n\n dirname(path: string): string {\n return dirname(path);\n },\n\n basename(path: string): string {\n return basename(path);\n },\n\n join(...paths: string[]): string {\n return join(...paths);\n },\n\n relative(from: string, to: string): string {\n return relative(from, to);\n },\n };\n\n function resolvePath(path: string): string {\n return isAbsolute(path) ? path : resolve(baseCwd, path);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAoBA,SAAgB,mBAAmB,KAAyB;CAC1D,MAAM,UAAU,OAAO,QAAQ,KAAK;AAEpC,QAAO;EACL,MAAM,OAAO,QAAgC;GAC3C,MAAM,OAAO,IAAI,KAAK,YAAYA,OAAK,CAAC;AACxC,OAAI;AACF,UAAM,KAAK,QAAQ;AACnB,WAAO;WACD;AACN,WAAO;;;EAIX,MAAM,SAAS,QAA+B;AAE5C,UADa,IAAI,KAAK,YAAYA,OAAK,CAAC,CAC5B,MAAM;;EAGpB,MAAM,UAAU,QAAc,SAAgC;GAC5D,MAAM,WAAW,YAAYA,OAAK;AAClC,SAAM,IAAI,MAAM,UAAU,QAAQ;;EAGpC,MAAM,OAAO,QAA6B;AAExC,SADa,IAAI,KAAK,YAAYA,OAAK,CAAC,CAC7B,QAAQ;;EAGrB,MAAM,KAAK,QAAiC;GAC1C,MAAM,QAAQ,MAAMC,KAAO,YAAYD,OAAK,CAAC;AAC7C,UAAO;IACL,MAAM,MAAM;IACZ,QAAQ,MAAM,QAAQ;IACtB,aAAa,MAAM,aAAa;IAChC,OAAO,MAAM;IACd;;EAGH,MAAM,MAAM,QAA6B;AACvC,SAAM,MAAM,YAAYA,OAAK,EAAE,EAAE,WAAW,MAAM,CAAC;;EAGrD,MAAM,KAAK,SAA6C;GACtD,MAAM,WACJ,QAAQ,aACP,QAAQ,UAAU,CAAC,QAAQ,QAAQ,GAAG;GACzC,MAAM,SAAS,QAAQ,UAAU;AAYjC,UANgB,MAAME,KAAO,UAAU;IACrC,KALc,QAAQ,OAAO;IAM7B;IACA,UALe,QAAQ,YAAY;IAMpC,CAAC;;EAKJ,QAAQ,GAAG,OAAyB;GAClC,MAAM,CAAC,OAAO,GAAG,QAAQ;AACzB,OAAI,CAAC,MAAO,QAAO;AACnB,UAAO,QAAQ,SAAS,OAAO,GAAG,KAAK;;EAGzC,QAAQ,QAAsB;AAC5B,UAAO,QAAQF,OAAK;;EAGtB,SAAS,QAAsB;AAC7B,UAAO,SAASA,OAAK;;EAGvB,KAAK,GAAG,OAAyB;AAC/B,UAAO,KAAK,GAAG,MAAM;;EAGvB,SAAS,MAAc,IAAoB;AACzC,UAAO,SAAS,MAAM,GAAG;;EAE5B;CAED,SAAS,YAAY,QAAsB;AACzC,SAAO,WAAWA,OAAK,GAAGA,SAAO,QAAQ,SAASA,OAAK"}
|
package/dist/adapters/fs.d.mts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import { FsAdapter } from "../ports/fs.mjs";
|
|
2
|
-
|
|
3
1
|
//#region src/adapters/fs.d.ts
|
|
4
|
-
|
|
5
2
|
declare const DEFAULT_SPEC_PATTERNS: string[];
|
|
6
|
-
|
|
7
|
-
* Create a Node.js filesystem adapter.
|
|
8
|
-
*/
|
|
9
|
-
declare function createNodeFsAdapter(cwd?: string): FsAdapter;
|
|
3
|
+
declare const DEFAULT_FS_IGNORES: string[];
|
|
10
4
|
//#endregion
|
|
11
|
-
export {
|
|
5
|
+
export { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS };
|
|
12
6
|
//# sourceMappingURL=fs.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.mts","names":[],"sources":["../../src/adapters/fs.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs.d.mts","names":[],"sources":["../../src/adapters/fs.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,cAoCA,kBAFZ,EAAA,MAAA,EAAA"}
|
package/dist/adapters/fs.mjs
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import { access, mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
|
|
2
|
-
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
3
|
-
import { glob } from "glob";
|
|
4
|
-
|
|
5
1
|
//#region src/adapters/fs.ts
|
|
6
|
-
/**
|
|
7
|
-
* Node.js filesystem adapter implementation.
|
|
8
|
-
*/
|
|
9
2
|
const DEFAULT_SPEC_PATTERNS = [
|
|
10
3
|
"**/*.operation.ts",
|
|
11
4
|
"**/*.operations.ts",
|
|
@@ -36,12 +29,13 @@ const DEFAULT_SPEC_PATTERNS = [
|
|
|
36
29
|
"**/tests/*.ts",
|
|
37
30
|
"**/tests/*.test-spec.ts"
|
|
38
31
|
];
|
|
39
|
-
const
|
|
32
|
+
const DEFAULT_FS_IGNORES = [
|
|
33
|
+
"**/.git/**",
|
|
40
34
|
"**/node_modules/**",
|
|
41
35
|
"**/dist/**",
|
|
36
|
+
"**/build/**",
|
|
42
37
|
"**/.turbo/**",
|
|
43
38
|
"**/.next/**",
|
|
44
|
-
"**/build/**",
|
|
45
39
|
"**/coverage/**",
|
|
46
40
|
"**/*.d.ts",
|
|
47
41
|
"**/importer/**",
|
|
@@ -49,85 +43,7 @@ const DEFAULT_IGNORES = [
|
|
|
49
43
|
"**/docs/**/*.docblock.ts",
|
|
50
44
|
"**/docs/presentations.ts"
|
|
51
45
|
];
|
|
52
|
-
/**
|
|
53
|
-
* Create a Node.js filesystem adapter.
|
|
54
|
-
*/
|
|
55
|
-
function createNodeFsAdapter(cwd) {
|
|
56
|
-
const baseCwd = cwd ?? process.cwd();
|
|
57
|
-
return {
|
|
58
|
-
async exists(path$1) {
|
|
59
|
-
try {
|
|
60
|
-
await access(resolvePath(path$1));
|
|
61
|
-
return true;
|
|
62
|
-
} catch {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
async readFile(path$1) {
|
|
67
|
-
return readFile(resolvePath(path$1), "utf-8");
|
|
68
|
-
},
|
|
69
|
-
async writeFile(path$1, content) {
|
|
70
|
-
const fullPath = resolvePath(path$1);
|
|
71
|
-
await mkdir(dirname(fullPath), { recursive: true });
|
|
72
|
-
await writeFile(fullPath, content, "utf-8");
|
|
73
|
-
},
|
|
74
|
-
async remove(path$1) {
|
|
75
|
-
await rm(resolvePath(path$1), {
|
|
76
|
-
recursive: true,
|
|
77
|
-
force: true
|
|
78
|
-
});
|
|
79
|
-
},
|
|
80
|
-
async stat(path$1) {
|
|
81
|
-
const stats = await stat(resolvePath(path$1));
|
|
82
|
-
return {
|
|
83
|
-
size: stats.size,
|
|
84
|
-
isFile: stats.isFile(),
|
|
85
|
-
isDirectory: stats.isDirectory(),
|
|
86
|
-
mtime: stats.mtime
|
|
87
|
-
};
|
|
88
|
-
},
|
|
89
|
-
async mkdir(path$1) {
|
|
90
|
-
await mkdir(resolvePath(path$1), { recursive: true });
|
|
91
|
-
},
|
|
92
|
-
async glob(options) {
|
|
93
|
-
const patterns = options.patterns ?? (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);
|
|
94
|
-
const ignore = options.ignore ?? DEFAULT_IGNORES;
|
|
95
|
-
const globCwd = options.cwd ?? baseCwd;
|
|
96
|
-
const absolute = options.absolute ?? true;
|
|
97
|
-
const all = [];
|
|
98
|
-
for (const pattern of patterns) {
|
|
99
|
-
const matches = await glob(pattern, {
|
|
100
|
-
cwd: globCwd,
|
|
101
|
-
ignore,
|
|
102
|
-
absolute
|
|
103
|
-
});
|
|
104
|
-
all.push(...matches);
|
|
105
|
-
}
|
|
106
|
-
return Array.from(new Set(all)).sort((a, b) => a.localeCompare(b));
|
|
107
|
-
},
|
|
108
|
-
resolve(...paths) {
|
|
109
|
-
const [first, ...rest] = paths;
|
|
110
|
-
if (!first) return baseCwd;
|
|
111
|
-
return resolve(baseCwd, first, ...rest);
|
|
112
|
-
},
|
|
113
|
-
dirname(path$1) {
|
|
114
|
-
return dirname(path$1);
|
|
115
|
-
},
|
|
116
|
-
basename(path$1) {
|
|
117
|
-
return basename(path$1);
|
|
118
|
-
},
|
|
119
|
-
join(...paths) {
|
|
120
|
-
return join(...paths);
|
|
121
|
-
},
|
|
122
|
-
relative(from, to) {
|
|
123
|
-
return relative(from, to);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
function resolvePath(path$1) {
|
|
127
|
-
return isAbsolute(path$1) ? path$1 : resolve(baseCwd, path$1);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
46
|
|
|
131
47
|
//#endregion
|
|
132
|
-
export {
|
|
48
|
+
export { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS };
|
|
133
49
|
//# sourceMappingURL=fs.mjs.map
|
package/dist/adapters/fs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.mjs","names":[
|
|
1
|
+
{"version":3,"file":"fs.mjs","names":[],"sources":["../../src/adapters/fs.ts"],"sourcesContent":["export const DEFAULT_SPEC_PATTERNS = [\n // Standard dot-prefixed naming convention\n '**/*.operation.ts',\n '**/*.operations.ts',\n '**/*.event.ts',\n '**/*.presentation.ts',\n '**/*.feature.ts',\n '**/*.capability.ts',\n '**/*.workflow.ts',\n '**/*.data-view.ts',\n '**/*.form.ts',\n '**/*.migration.ts',\n '**/*.telemetry.ts',\n '**/*.experiment.ts',\n '**/*.app-config.ts',\n '**/*.integration.ts',\n '**/*.knowledge.ts',\n '**/*.policy.ts',\n '**/*.test-spec.ts',\n // Directory-based patterns (contracts/ and operations/ directories)\n '**/contracts/*.ts',\n '**/contracts/index.ts',\n '**/operations/*.ts',\n '**/operations/index.ts',\n // Standalone file patterns (events.ts, presentations.ts)\n '**/operations.ts',\n '**/events.ts',\n '**/presentations.ts',\n // Directory index patterns (/events/index.ts, /presentations/index.ts)\n '**/events/index.ts',\n '**/presentations/index.ts',\n // Test specs in tests directory\n '**/tests/*.ts',\n '**/tests/*.test-spec.ts',\n];\n\nexport const DEFAULT_FS_IGNORES = [\n '**/.git/**',\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.turbo/**',\n '**/.next/**',\n '**/coverage/**',\n '**/*.d.ts',\n // Code generators and transformers (not actual specs)\n '**/importer/**',\n '**/exporter/**',\n // Documentation blocks (treated separately)\n '**/docs/**/*.docblock.ts',\n '**/docs/presentations.ts',\n];\n"],"mappings":";AAAA,MAAa,wBAAwB;CAEnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACD;AAED,MAAa,qBAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FsAdapter } from "../ports/fs.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/fs.node.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a Node.js filesystem adapter.
|
|
7
|
+
*/
|
|
8
|
+
declare function createNodeFsAdapter(cwd?: string): FsAdapter;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { createNodeFsAdapter };
|
|
11
|
+
//# sourceMappingURL=fs.node.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.node.d.mts","names":[],"sources":["../../src/adapters/fs.node.ts"],"sourcesContent":[],"mappings":";;;;;;;iBA2BgB,mBAAA,gBAAmC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./fs.mjs";
|
|
2
|
+
import { access, mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
4
|
+
import { glob } from "glob";
|
|
5
|
+
|
|
6
|
+
//#region src/adapters/fs.node.ts
|
|
7
|
+
/**
|
|
8
|
+
* Node.js filesystem adapter implementation.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Create a Node.js filesystem adapter.
|
|
12
|
+
*/
|
|
13
|
+
function createNodeFsAdapter(cwd) {
|
|
14
|
+
const baseCwd = cwd ?? process.cwd();
|
|
15
|
+
return {
|
|
16
|
+
async exists(path$1) {
|
|
17
|
+
try {
|
|
18
|
+
await access(resolvePath(path$1));
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
async readFile(path$1) {
|
|
25
|
+
return readFile(resolvePath(path$1), "utf-8");
|
|
26
|
+
},
|
|
27
|
+
async writeFile(path$1, content) {
|
|
28
|
+
const fullPath = resolvePath(path$1);
|
|
29
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
30
|
+
await writeFile(fullPath, content, "utf-8");
|
|
31
|
+
},
|
|
32
|
+
async remove(path$1) {
|
|
33
|
+
await rm(resolvePath(path$1), {
|
|
34
|
+
recursive: true,
|
|
35
|
+
force: true
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
async stat(path$1) {
|
|
39
|
+
const stats = await stat(resolvePath(path$1));
|
|
40
|
+
return {
|
|
41
|
+
size: stats.size,
|
|
42
|
+
isFile: stats.isFile(),
|
|
43
|
+
isDirectory: stats.isDirectory(),
|
|
44
|
+
mtime: stats.mtime
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
async mkdir(path$1) {
|
|
48
|
+
await mkdir(resolvePath(path$1), { recursive: true });
|
|
49
|
+
},
|
|
50
|
+
async glob(options) {
|
|
51
|
+
const patterns = options.patterns ?? (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);
|
|
52
|
+
const ignore = options.ignore ?? DEFAULT_FS_IGNORES;
|
|
53
|
+
return await glob(patterns, {
|
|
54
|
+
cwd: options.cwd ?? baseCwd,
|
|
55
|
+
ignore,
|
|
56
|
+
absolute: options.absolute ?? true
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
resolve(...paths) {
|
|
60
|
+
const [first, ...rest] = paths;
|
|
61
|
+
if (!first) return baseCwd;
|
|
62
|
+
return resolve(baseCwd, first, ...rest);
|
|
63
|
+
},
|
|
64
|
+
dirname(path$1) {
|
|
65
|
+
return dirname(path$1);
|
|
66
|
+
},
|
|
67
|
+
basename(path$1) {
|
|
68
|
+
return basename(path$1);
|
|
69
|
+
},
|
|
70
|
+
join(...paths) {
|
|
71
|
+
return join(...paths);
|
|
72
|
+
},
|
|
73
|
+
relative(from, to) {
|
|
74
|
+
return relative(from, to);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
function resolvePath(path$1) {
|
|
78
|
+
return isAbsolute(path$1) ? path$1 : resolve(baseCwd, path$1);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { createNodeFsAdapter };
|
|
84
|
+
//# sourceMappingURL=fs.node.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.node.mjs","names":["path","fsStat","globFn"],"sources":["../../src/adapters/fs.node.ts"],"sourcesContent":["/**\n * Node.js filesystem adapter implementation.\n */\n\nimport {\n access,\n mkdir,\n readFile,\n rm,\n stat as fsStat,\n writeFile,\n} from 'node:fs/promises';\nimport {\n basename,\n dirname,\n isAbsolute,\n join,\n relative,\n resolve,\n} from 'node:path';\nimport { glob as globFn } from 'glob';\nimport type { DiscoverOptions, FileStat, FsAdapter } from '../ports/fs';\nimport { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from './fs';\n\n/**\n * Create a Node.js filesystem adapter.\n */\nexport function createNodeFsAdapter(cwd?: string): FsAdapter {\n const baseCwd = cwd ?? process.cwd();\n\n return {\n async exists(path: string): Promise<boolean> {\n try {\n await access(resolvePath(path));\n return true;\n } catch {\n return false;\n }\n },\n\n async readFile(path: string): Promise<string> {\n return readFile(resolvePath(path), 'utf-8');\n },\n\n async writeFile(path: string, content: string): Promise<void> {\n const fullPath = resolvePath(path);\n const dir = dirname(fullPath);\n await mkdir(dir, { recursive: true });\n await writeFile(fullPath, content, 'utf-8');\n },\n\n async remove(path: string): Promise<void> {\n await rm(resolvePath(path), { recursive: true, force: true });\n },\n\n async stat(path: string): Promise<FileStat> {\n const stats = await fsStat(resolvePath(path));\n return {\n size: stats.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n mtime: stats.mtime,\n };\n },\n\n async mkdir(path: string): Promise<void> {\n await mkdir(resolvePath(path), { recursive: true });\n },\n\n async glob(options: DiscoverOptions): Promise<string[]> {\n const patterns =\n options.patterns ??\n (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);\n const ignore = options.ignore ?? DEFAULT_FS_IGNORES;\n // Use provided cwd or fall back to adapter's baseCwd\n const globCwd = options.cwd ?? baseCwd;\n // Default to absolute paths for safer file operations\n const absolute = options.absolute ?? true;\n\n const matches = await globFn(patterns, {\n cwd: globCwd,\n ignore,\n absolute,\n });\n\n return matches;\n },\n\n resolve(...paths: string[]): string {\n const [first, ...rest] = paths;\n if (!first) return baseCwd;\n return resolve(baseCwd, first, ...rest);\n },\n\n dirname(path: string): string {\n return dirname(path);\n },\n\n basename(path: string): string {\n return basename(path);\n },\n\n join(...paths: string[]): string {\n return join(...paths);\n },\n\n relative(from: string, to: string): string {\n return relative(from, to);\n },\n };\n\n function resolvePath(path: string): string {\n return isAbsolute(path) ? path : resolve(baseCwd, path);\n }\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,SAAgB,oBAAoB,KAAyB;CAC3D,MAAM,UAAU,OAAO,QAAQ,KAAK;AAEpC,QAAO;EACL,MAAM,OAAO,QAAgC;AAC3C,OAAI;AACF,UAAM,OAAO,YAAYA,OAAK,CAAC;AAC/B,WAAO;WACD;AACN,WAAO;;;EAIX,MAAM,SAAS,QAA+B;AAC5C,UAAO,SAAS,YAAYA,OAAK,EAAE,QAAQ;;EAG7C,MAAM,UAAU,QAAc,SAAgC;GAC5D,MAAM,WAAW,YAAYA,OAAK;AAElC,SAAM,MADM,QAAQ,SAAS,EACZ,EAAE,WAAW,MAAM,CAAC;AACrC,SAAM,UAAU,UAAU,SAAS,QAAQ;;EAG7C,MAAM,OAAO,QAA6B;AACxC,SAAM,GAAG,YAAYA,OAAK,EAAE;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC;;EAG/D,MAAM,KAAK,QAAiC;GAC1C,MAAM,QAAQ,MAAMC,KAAO,YAAYD,OAAK,CAAC;AAC7C,UAAO;IACL,MAAM,MAAM;IACZ,QAAQ,MAAM,QAAQ;IACtB,aAAa,MAAM,aAAa;IAChC,OAAO,MAAM;IACd;;EAGH,MAAM,MAAM,QAA6B;AACvC,SAAM,MAAM,YAAYA,OAAK,EAAE,EAAE,WAAW,MAAM,CAAC;;EAGrD,MAAM,KAAK,SAA6C;GACtD,MAAM,WACJ,QAAQ,aACP,QAAQ,UAAU,CAAC,QAAQ,QAAQ,GAAG;GACzC,MAAM,SAAS,QAAQ,UAAU;AAYjC,UANgB,MAAME,KAAO,UAAU;IACrC,KALc,QAAQ,OAAO;IAM7B;IACA,UALe,QAAQ,YAAY;IAMpC,CAAC;;EAKJ,QAAQ,GAAG,OAAyB;GAClC,MAAM,CAAC,OAAO,GAAG,QAAQ;AACzB,OAAI,CAAC,MAAO,QAAO;AACnB,UAAO,QAAQ,SAAS,OAAO,GAAG,KAAK;;EAGzC,QAAQ,QAAsB;AAC5B,UAAO,QAAQF,OAAK;;EAGtB,SAAS,QAAsB;AAC7B,UAAO,SAASA,OAAK;;EAGvB,KAAK,GAAG,OAAyB;AAC/B,UAAO,KAAK,GAAG,MAAM;;EAGvB,SAAS,MAAc,IAAoB;AACzC,UAAO,SAAS,MAAM,GAAG;;EAE5B;CAED,SAAS,YAAY,QAAsB;AACzC,SAAO,WAAWA,OAAK,GAAGA,SAAO,QAAQ,SAASA,OAAK"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createNodeFsAdapter } from "./fs.node.mjs";
|
|
2
|
+
import { createBunFsAdapter } from "./fs.bun.mjs";
|
|
3
|
+
import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./fs.mjs";
|
|
2
4
|
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
5
|
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
6
|
import { createNodeAiAdapter } from "./ai.mjs";
|
package/dist/adapters/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./fs.mjs";
|
|
2
|
+
import { createNodeFsAdapter } from "./fs.node.mjs";
|
|
3
|
+
import { createBunFsAdapter } from "./fs.bun.mjs";
|
|
2
4
|
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
5
|
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
6
|
import { createNodeAiAdapter } from "./ai.mjs";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AgentConfig, AgentResult, AgentTask } from "./types.mjs";
|
|
2
|
+
import { AgentOrchestrator } from "./orchestrator.mjs";
|
|
3
|
+
import { SimpleAgent } from "./simple-agent.mjs";
|
|
4
|
+
import { CursorAgent } from "./cursor-agent.mjs";
|
|
5
|
+
import { ClaudeCodeAgent } from "./claude-code-agent.mjs";
|
|
6
|
+
import { OpenAICodexAgent } from "./openai-codex-agent.mjs";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AgentMode,
|
|
1
|
+
import { AgentResult, AgentTask } from "./types.mjs";
|
|
2
|
+
import { AgentMode, ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/ai/agents/orchestrator.d.ts
|
|
5
5
|
|
|
6
6
|
declare class AgentOrchestrator {
|
|
7
7
|
private config;
|
|
8
|
-
private agents;
|
|
8
|
+
private readonly agents;
|
|
9
9
|
private defaultAgent;
|
|
10
|
-
constructor(config:
|
|
10
|
+
constructor(config: ResolvedContractsrcConfig);
|
|
11
11
|
/**
|
|
12
12
|
* Execute a task using the configured agent with fallback support
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.mts","names":[],"sources":["../../../src/ai/agents/orchestrator.ts"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.mts","names":[],"sources":["../../../src/ai/agents/orchestrator.ts"],"sourcesContent":[],"mappings":";;;;;AAkD0B,cAhCb,iBAAA,CAgCa;EAAoB,QAAA,MAAA;EAAR,iBAAA,MAAA;EAuE2B,QAAA,YAAA;EAAR,WAAA,CAAA,MAAA,EAnG3B,yBAmG2B;EAc5C;;;EAcR,WAAA,CAAA,IAAA,EAnGqB,SAmGrB,CAAA,EAnGiC,OAmGjC,CAnGyC,WAmGzC,CAAA;EAW6D;;;EAWpC,QAAA,CAAA,QAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,MAAA,CAAA,EAlD2B,OAkD3B,CAlDmC,WAkDnC,CAAA;EAAO;;;+DApChC,QAAQ;;;;0DAcR,QAAQ;;;;oDAW6C,QAAQ;;;;wBAWpC;UAClB"}
|
|
@@ -2,6 +2,7 @@ import { SimpleAgent } from "./simple-agent.mjs";
|
|
|
2
2
|
import { CursorAgent } from "./cursor-agent.mjs";
|
|
3
3
|
import { ClaudeCodeAgent } from "./claude-code-agent.mjs";
|
|
4
4
|
import { OpenAICodexAgent } from "./openai-codex-agent.mjs";
|
|
5
|
+
import { UnifiedAgentAdapter } from "./unified-adapter.mjs";
|
|
5
6
|
import chalk from "chalk";
|
|
6
7
|
import ora from "ora";
|
|
7
8
|
|
|
@@ -25,6 +26,7 @@ var AgentOrchestrator = class {
|
|
|
25
26
|
this.agents.set("claude-code", claudeAgent);
|
|
26
27
|
this.agents.set("openai-codex", openaiAgent);
|
|
27
28
|
this.defaultAgent = simpleAgent;
|
|
29
|
+
this.agents.set("opencode-sdk", new UnifiedAgentAdapter("opencode-sdk", { backend: "opencode-sdk" }));
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
32
|
* Execute a task using the configured agent with fallback support
|
|
@@ -131,8 +133,11 @@ var AgentOrchestrator = class {
|
|
|
131
133
|
getFallbackMode(mode) {
|
|
132
134
|
return {
|
|
133
135
|
cursor: "claude-code",
|
|
136
|
+
"claude-agent-sdk": "claude-code",
|
|
134
137
|
"claude-code": "openai-codex",
|
|
135
138
|
"openai-codex": "simple",
|
|
139
|
+
opencode: "opencode-sdk",
|
|
140
|
+
"opencode-sdk": "claude-code",
|
|
136
141
|
simple: "simple"
|
|
137
142
|
}[mode];
|
|
138
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.mjs","names":[],"sources":["../../../src/ai/agents/orchestrator.ts"],"sourcesContent":["/**\n * Agent Orchestrator - Coordinates between different AI agents\n * Selects the appropriate agent based on config and task requirements\n */\n\nimport { SimpleAgent } from './simple-agent';\nimport { CursorAgent } from './cursor-agent';\nimport { ClaudeCodeAgent } from './claude-code-agent';\nimport { OpenAICodexAgent } from './openai-codex-agent';\nimport
|
|
1
|
+
{"version":3,"file":"orchestrator.mjs","names":[],"sources":["../../../src/ai/agents/orchestrator.ts"],"sourcesContent":["/**\n * Agent Orchestrator - Coordinates between different AI agents\n * Selects the appropriate agent based on config and task requirements\n */\n\nimport { SimpleAgent } from './simple-agent';\nimport { CursorAgent } from './cursor-agent';\nimport { ClaudeCodeAgent } from './claude-code-agent';\nimport { OpenAICodexAgent } from './openai-codex-agent';\nimport { UnifiedAgentAdapter } from './unified-adapter';\nimport type { AgentProvider, AgentResult, AgentTask } from './types';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport type {\n AgentMode,\n ResolvedContractsrcConfig,\n} from '@contractspec/lib.contracts';\n\nexport class AgentOrchestrator {\n private readonly agents: Map<AgentMode, AgentProvider>;\n private defaultAgent: AgentProvider;\n\n constructor(private config: ResolvedContractsrcConfig) {\n // Initialize all available agents\n this.agents = new Map();\n\n const simpleAgent = new SimpleAgent(config);\n const cursorAgent = new CursorAgent();\n const claudeAgent = new ClaudeCodeAgent();\n const openaiAgent = new OpenAICodexAgent();\n\n this.agents.set('simple', simpleAgent);\n this.agents.set('cursor', cursorAgent);\n this.agents.set('claude-code', claudeAgent);\n this.agents.set('openai-codex', openaiAgent);\n\n this.defaultAgent = simpleAgent;\n\n // Register 3rd party SDK agents via UnifiedAgentAdapter\n this.agents.set(\n 'opencode-sdk',\n new UnifiedAgentAdapter('opencode-sdk', {\n backend: 'opencode-sdk',\n })\n );\n }\n\n /**\n * Execute a task using the configured agent with fallback support\n */\n async executeTask(task: AgentTask): Promise<AgentResult> {\n const agentMode = this.getAgentMode();\n const agent = this.agents.get(agentMode);\n\n if (!agent) {\n console.log(\n chalk.yellow(`⚠️ Agent '${agentMode}' not found, using simple agent`)\n );\n return this.defaultAgent.generate(task);\n }\n\n // Check if agent can handle the task\n if (!agent.canHandle(task)) {\n console.log(\n chalk.yellow(\n `⚠️ Agent '${agentMode}' cannot handle this task, falling back to simple agent`\n )\n );\n return this.defaultAgent.generate(task);\n }\n\n // Try primary agent\n const spinner = ora(`Executing with ${agentMode} agent...`).start();\n\n try {\n const result =\n task.type === 'validate'\n ? await agent.validate(task)\n : await agent.generate(task);\n\n if (result.success) {\n spinner.succeed(\n chalk.green(`${agentMode} agent completed successfully`)\n );\n return result;\n }\n\n // If primary agent failed, try fallback\n spinner.warn(\n chalk.yellow(`${agentMode} agent failed, trying fallback...`)\n );\n\n const fallbackMode = this.getFallbackMode(agentMode);\n if (fallbackMode && fallbackMode !== agentMode) {\n const fallbackAgent = this.agents.get(fallbackMode);\n if (fallbackAgent && fallbackAgent.canHandle(task)) {\n return task.type === 'validate'\n ? await fallbackAgent.validate(task)\n : await fallbackAgent.generate(task);\n }\n }\n\n // Ultimate fallback to simple agent\n spinner.info(chalk.gray('Using simple agent as ultimate fallback'));\n return task.type === 'validate'\n ? await this.defaultAgent.validate(task)\n : await this.defaultAgent.generate(task);\n } catch (_error) {\n spinner.fail(chalk.red('Agent execution failed'));\n\n // Fallback on error\n console.log(chalk.gray('Falling back to simple agent...'));\n return task.type === 'validate'\n ? await this.defaultAgent.validate(task)\n : await this.defaultAgent.generate(task);\n }\n }\n\n /**\n * Generate code from specification\n */\n async generate(specCode: string, targetPath?: string): Promise<AgentResult> {\n return this.executeTask({\n type: 'generate',\n specCode,\n targetPath,\n });\n }\n\n /**\n * Generate tests for implementation\n */\n async generateTests(\n specCode: string,\n implementationCode: string\n ): Promise<AgentResult> {\n return this.executeTask({\n type: 'test',\n specCode,\n existingCode: implementationCode,\n });\n }\n\n /**\n * Validate implementation against specification\n */\n async validate(\n specCode: string,\n implementationCode: string\n ): Promise<AgentResult> {\n return this.executeTask({\n type: 'validate',\n specCode,\n existingCode: implementationCode,\n });\n }\n\n /**\n * Refactor existing code\n */\n async refactor(specCode: string, existingCode: string): Promise<AgentResult> {\n return this.executeTask({\n type: 'refactor',\n specCode,\n existingCode,\n });\n }\n\n /**\n * List available agents and their status\n */\n async getAvailableAgents(): Promise<\n { mode: AgentMode; available: boolean; reason?: string }[]\n > {\n const results = [];\n\n for (const [mode, agent] of this.agents) {\n const testTask: AgentTask = {\n type: 'generate',\n specCode: 'test',\n };\n\n const canHandle = agent.canHandle(testTask);\n\n results.push({\n mode,\n available: canHandle,\n reason: canHandle\n ? undefined\n : 'Not configured or dependencies missing',\n });\n }\n\n return results;\n }\n\n /**\n * Get the configured agent mode\n */\n private getAgentMode(): AgentMode {\n // Check config for agent mode\n const mode = this.config.agentMode || 'simple';\n return mode;\n }\n\n /**\n * Get fallback mode for an agent\n */\n private getFallbackMode(mode: AgentMode): AgentMode {\n const fallbacks: Record<AgentMode, AgentMode> = {\n cursor: 'claude-code',\n 'claude-agent-sdk': 'claude-code',\n 'claude-code': 'openai-codex',\n 'openai-codex': 'simple',\n opencode: 'opencode-sdk',\n 'opencode-sdk': 'claude-code',\n simple: 'simple',\n };\n\n return fallbacks[mode];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Config } from "../../types/config.mjs";
|
|
2
1
|
import { AgentProvider, AgentResult, AgentTask } from "./types.mjs";
|
|
2
|
+
import { ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/ai/agents/simple-agent.d.ts
|
|
5
5
|
|
|
6
6
|
declare class SimpleAgent implements AgentProvider {
|
|
7
7
|
private config;
|
|
8
8
|
name: "simple";
|
|
9
|
-
constructor(config:
|
|
9
|
+
constructor(config: ResolvedContractsrcConfig);
|
|
10
10
|
canHandle(_task: AgentTask): boolean;
|
|
11
11
|
generate(task: AgentTask): Promise<AgentResult>;
|
|
12
12
|
validate(task: AgentTask): Promise<AgentResult>;
|