@open-mercato/cli 0.6.4-develop.4382.1.6b4f656b77 → 0.6.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/.turbo/turbo-build.log +1 -1
- package/dist/agentic/guides/core.customers.md +1 -1
- package/dist/agentic/shared/AGENTS.md.template +56 -33
- package/dist/agentic/shared/ai/skills/{auto-continue-pr → om-auto-continue-pr}/SKILL.md +19 -19
- package/dist/agentic/shared/ai/skills/{auto-create-pr → om-auto-continue-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-continue-pr-loop → om-auto-continue-pr-loop}/SKILL.md +32 -32
- package/dist/agentic/shared/ai/skills/{auto-create-pr → om-auto-create-pr}/SKILL.md +24 -24
- package/dist/agentic/shared/ai/skills/{auto-fix-github → om-auto-create-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-create-pr-loop → om-auto-create-pr-loop}/SKILL.md +40 -40
- package/dist/agentic/shared/ai/skills/{auto-fix-github → om-auto-fix-github}/SKILL.md +3 -3
- package/dist/agentic/shared/ai/skills/{auto-continue-pr → om-auto-fix-github}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-review-pr → om-auto-review-pr}/SKILL.md +5 -5
- package/dist/agentic/shared/ai/skills/{auto-review-pr → om-auto-review-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-upgrade-0.4.10-to-0.5.0 → om-auto-upgrade-0.4.10-to-0.5.0}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{backend-ui-design → om-backend-ui-design}/SKILL.md +2 -2
- package/dist/agentic/shared/ai/skills/{code-review → om-code-review}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{code-review → om-code-review}/references/review-checklist.md +3 -0
- package/dist/agentic/shared/ai/skills/{data-model-design → om-data-model-design}/SKILL.md +4 -2
- package/dist/agentic/shared/ai/skills/{eject-and-customize → om-eject-and-customize}/SKILL.md +2 -2
- package/dist/agentic/shared/ai/skills/{implement-spec → om-implement-spec}/SKILL.md +6 -6
- package/dist/agentic/shared/ai/skills/{integration-builder → om-integration-builder}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{integration-tests → om-integration-tests}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/SKILL.md +5 -3
- package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/references/naming-conventions.md +7 -8
- package/dist/agentic/shared/ai/skills/om-prepare-issue/SKILL.md +202 -0
- package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/SKILL.md +6 -6
- package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-checklist.md +3 -3
- package/dist/agentic/shared/ai/skills/{system-extension → om-system-extension}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{trim-unused-modules → om-trim-unused-modules}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{troubleshooter → om-troubleshooter}/SKILL.md +1 -1
- package/dist/bin.js +1 -0
- package/dist/bin.js.map +2 -2
- package/dist/lib/__integration__/TC-INT-008.spec.js +1 -1
- package/dist/lib/__integration__/TC-INT-008.spec.js.map +2 -2
- package/dist/lib/agentic-setup.js +52 -51
- package/dist/lib/agentic-setup.js.map +2 -2
- package/dist/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.meta.js +7 -0
- package/dist/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.meta.js.map +7 -0
- package/dist/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.spec.js +63 -0
- package/dist/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.spec.js.map +7 -0
- package/dist/lib/deploy/railway/env.js +98 -0
- package/dist/lib/deploy/railway/env.js.map +7 -0
- package/dist/lib/deploy/railway/graphql-client.js +99 -0
- package/dist/lib/deploy/railway/graphql-client.js.map +7 -0
- package/dist/lib/deploy/railway/index.js +1115 -0
- package/dist/lib/deploy/railway/index.js.map +7 -0
- package/dist/lib/deploy/railway/operations.js +249 -0
- package/dist/lib/deploy/railway/operations.js.map +7 -0
- package/dist/lib/deploy/railway/options.js +155 -0
- package/dist/lib/deploy/railway/options.js.map +7 -0
- package/dist/lib/deploy/railway/railway-cli.js +61 -0
- package/dist/lib/deploy/railway/railway-cli.js.map +7 -0
- package/dist/lib/deploy/railway/redaction.js +88 -0
- package/dist/lib/deploy/railway/redaction.js.map +7 -0
- package/dist/lib/deploy/railway/source.js +128 -0
- package/dist/lib/deploy/railway/source.js.map +7 -0
- package/dist/lib/deploy/railway/state.js +41 -0
- package/dist/lib/deploy/railway/state.js.map +7 -0
- package/dist/lib/deploy/railway/token.js +46 -0
- package/dist/lib/deploy/railway/token.js.map +7 -0
- package/dist/lib/deploy/railway/types.js +1 -0
- package/dist/lib/deploy/railway/types.js.map +7 -0
- package/dist/lib/generators/openapi.js +4 -0
- package/dist/lib/generators/openapi.js.map +2 -2
- package/dist/lib/testing/integration.js +57 -26
- package/dist/lib/testing/integration.js.map +2 -2
- package/dist/lib/testing/runtime-utils.js +16 -8
- package/dist/lib/testing/runtime-utils.js.map +2 -2
- package/dist/mercato.js +23 -8
- package/dist/mercato.js.map +2 -2
- package/package.json +11 -12
- package/src/bin.ts +1 -0
- package/src/lib/__integration__/TC-INT-008.spec.ts +1 -1
- package/src/lib/agentic-setup.ts +52 -51
- package/src/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.meta.ts +3 -0
- package/src/lib/deploy/railway/__integration__/TC-CLI-RAILWAY-001.spec.ts +71 -0
- package/src/lib/deploy/railway/__tests__/dry-run.test.ts +61 -0
- package/src/lib/deploy/railway/__tests__/env.test.ts +55 -0
- package/src/lib/deploy/railway/__tests__/graphql-client.test.ts +80 -0
- package/src/lib/deploy/railway/__tests__/operations.test.ts +21 -0
- package/src/lib/deploy/railway/__tests__/options.test.ts +78 -0
- package/src/lib/deploy/railway/__tests__/redaction.test.ts +62 -0
- package/src/lib/deploy/railway/__tests__/source.test.ts +130 -0
- package/src/lib/deploy/railway/__tests__/state.test.ts +24 -0
- package/src/lib/deploy/railway/__tests__/token.test.ts +39 -0
- package/src/lib/deploy/railway/env.ts +112 -0
- package/src/lib/deploy/railway/graphql-client.ts +128 -0
- package/src/lib/deploy/railway/index.ts +1454 -0
- package/src/lib/deploy/railway/operations.ts +248 -0
- package/src/lib/deploy/railway/options.ts +167 -0
- package/src/lib/deploy/railway/railway-cli.ts +65 -0
- package/src/lib/deploy/railway/redaction.ts +91 -0
- package/src/lib/deploy/railway/source.ts +143 -0
- package/src/lib/deploy/railway/state.ts +45 -0
- package/src/lib/deploy/railway/token.ts +49 -0
- package/src/lib/deploy/railway/types.ts +87 -0
- package/src/lib/generators/openapi.ts +3 -0
- package/src/lib/testing/__tests__/integration.test.ts +79 -0
- package/src/lib/testing/__tests__/runtime-utils.test.ts +45 -1
- package/src/lib/testing/integration.ts +74 -28
- package/src/lib/testing/runtime-utils.ts +17 -8
- package/src/mercato.ts +33 -8
- /package/dist/agentic/shared/ai/skills/{backend-ui-design → om-backend-ui-design}/references/ui-components.md +0 -0
- /package/dist/agentic/shared/ai/skills/{data-model-design → om-data-model-design}/references/mikro-orm-cheatsheet.md +0 -0
- /package/dist/agentic/shared/ai/skills/{integration-builder → om-integration-builder}/references/adapter-contracts.md +0 -0
- /package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/references/navigation-patterns.md +0 -0
- /package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-template.md +0 -0
- /package/dist/agentic/shared/ai/skills/{system-extension → om-system-extension}/references/extension-contracts.md +0 -0
- /package/dist/agentic/shared/ai/skills/{troubleshooter → om-troubleshooter}/references/diagnostic-commands.md +0 -0
|
@@ -22,10 +22,17 @@ export function assertNode24Runtime(options: Node24RuntimeGuardOptions): void {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export async function getFreePort(): Promise<number> {
|
|
25
|
-
|
|
25
|
+
const tryListen = (host: string): Promise<number | null> => new Promise((resolve, reject) => {
|
|
26
26
|
const server = createServer()
|
|
27
|
-
server.on('error',
|
|
28
|
-
|
|
27
|
+
server.on('error', (error) => {
|
|
28
|
+
const errorCode = (error as NodeJS.ErrnoException).code
|
|
29
|
+
if (errorCode === 'EAFNOSUPPORT') {
|
|
30
|
+
resolve(null)
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
reject(error)
|
|
34
|
+
})
|
|
35
|
+
server.listen(0, host, () => {
|
|
29
36
|
const address = server.address()
|
|
30
37
|
if (!address || typeof address === 'string') {
|
|
31
38
|
server.close()
|
|
@@ -42,6 +49,8 @@ export async function getFreePort(): Promise<number> {
|
|
|
42
49
|
})
|
|
43
50
|
})
|
|
44
51
|
})
|
|
52
|
+
|
|
53
|
+
return (await tryListen('::')) ?? await tryListen('127.0.0.1') ?? Promise.reject(new Error('Unable to allocate free port'))
|
|
45
54
|
}
|
|
46
55
|
|
|
47
56
|
export async function isPortAvailable(port: number): Promise<boolean> {
|
|
@@ -62,17 +71,17 @@ export async function isPortAvailable(port: number): Promise<boolean> {
|
|
|
62
71
|
})
|
|
63
72
|
})
|
|
64
73
|
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
74
|
+
const wildcardIpv6Availability = await canBind('::')
|
|
75
|
+
if (wildcardIpv6Availability === false) {
|
|
67
76
|
return false
|
|
68
77
|
}
|
|
69
78
|
|
|
70
|
-
const
|
|
71
|
-
if (
|
|
79
|
+
const ipv4Availability = await canBind('127.0.0.1')
|
|
80
|
+
if (ipv4Availability === false) {
|
|
72
81
|
return false
|
|
73
82
|
}
|
|
74
83
|
|
|
75
|
-
return
|
|
84
|
+
return wildcardIpv6Availability === true || ipv4Availability === true
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
export async function getPreferredPort(preferredPort: number, logPrefix: string): Promise<number> {
|
package/src/mercato.ts
CHANGED
|
@@ -83,7 +83,7 @@ const TURBOPACK_CORRUPTION_PATTERNS = [
|
|
|
83
83
|
'TurbopackInternalError',
|
|
84
84
|
]
|
|
85
85
|
|
|
86
|
-
const BUILTIN_CLI_MODULE_IDS = new Set(['queue', 'generate', 'db', 'server', 'test'])
|
|
86
|
+
const BUILTIN_CLI_MODULE_IDS = new Set(['queue', 'generate', 'deploy', 'db', 'server', 'test'])
|
|
87
87
|
|
|
88
88
|
function collectNestedErrors(error: unknown, seen = new Set<unknown>()): ErrorWithCause[] {
|
|
89
89
|
if (!error || seen.has(error)) {
|
|
@@ -254,10 +254,13 @@ function removeTurbopackDevCache(appDir: string): void {
|
|
|
254
254
|
fs.rmSync(path.join(appDir, '.mercato', 'next', 'dev'), { recursive: true, force: true })
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
async function ensureEnvLoaded() {
|
|
257
|
+
async function ensureEnvLoaded(options: { createIfMissing?: boolean; quiet?: boolean } = {}) {
|
|
258
258
|
if (envLoaded) return
|
|
259
259
|
envLoaded = true
|
|
260
|
-
const quietDotenv =
|
|
260
|
+
const quietDotenv =
|
|
261
|
+
options.quiet === true ||
|
|
262
|
+
process.env.DOTENV_CONFIG_QUIET === '1' ||
|
|
263
|
+
process.env.DOTENV_CONFIG_QUIET === 'true'
|
|
261
264
|
|
|
262
265
|
// Try to find and load .env from the app directory
|
|
263
266
|
// First, try to find the app directory via resolver
|
|
@@ -268,7 +271,11 @@ async function ensureEnvLoaded() {
|
|
|
268
271
|
|
|
269
272
|
// Load .env from app directory if it exists
|
|
270
273
|
const envPath = path.join(appDir, '.env')
|
|
271
|
-
if (
|
|
274
|
+
if (
|
|
275
|
+
options.createIfMissing !== false &&
|
|
276
|
+
!fs.existsSync(envPath) &&
|
|
277
|
+
process.env.NODE_ENV !== 'production'
|
|
278
|
+
) {
|
|
272
279
|
const examplePath = path.join(appDir, '.env.example')
|
|
273
280
|
if (fs.existsSync(examplePath)) {
|
|
274
281
|
fs.copyFileSync(examplePath, envPath)
|
|
@@ -751,9 +758,9 @@ async function buildAllModules(): Promise<Module[]> {
|
|
|
751
758
|
}
|
|
752
759
|
|
|
753
760
|
export async function run(argv = process.argv) {
|
|
754
|
-
await ensureEnvLoaded()
|
|
755
761
|
const [, , ...parts] = argv
|
|
756
762
|
const [first, second, ...remaining] = parts
|
|
763
|
+
await ensureEnvLoaded({ createIfMissing: first !== 'deploy', quiet: first === 'deploy' })
|
|
757
764
|
|
|
758
765
|
// Handle init command directly
|
|
759
766
|
if (first === 'init') {
|
|
@@ -1461,6 +1468,19 @@ export async function run(argv = process.argv) {
|
|
|
1461
1468
|
} catch { /* @/cli may not exist in standalone apps — safe to ignore */ }
|
|
1462
1469
|
}
|
|
1463
1470
|
const all = modules.slice()
|
|
1471
|
+
|
|
1472
|
+
all.push({
|
|
1473
|
+
id: 'deploy',
|
|
1474
|
+
cli: [
|
|
1475
|
+
{
|
|
1476
|
+
command: 'railway',
|
|
1477
|
+
run: async (args: string[]) => {
|
|
1478
|
+
const { runRailwayDeploy } = await import('./lib/deploy/railway/index')
|
|
1479
|
+
await runRailwayDeploy(args)
|
|
1480
|
+
},
|
|
1481
|
+
},
|
|
1482
|
+
],
|
|
1483
|
+
} as Module)
|
|
1464
1484
|
|
|
1465
1485
|
// Built-in CLI module: queue
|
|
1466
1486
|
all.push({
|
|
@@ -2365,11 +2385,16 @@ export async function run(argv = process.argv) {
|
|
|
2365
2385
|
|
|
2366
2386
|
console.log('')
|
|
2367
2387
|
const started = Date.now()
|
|
2368
|
-
|
|
2388
|
+
const loggedArgs = modName === 'deploy' && cmdName === 'railway'
|
|
2389
|
+
? (await import('./lib/deploy/railway/options')).redactRailwayCliArgs(rest)
|
|
2390
|
+
: rest
|
|
2391
|
+
console.log(`🚀 Running ${modName}:${cmdName} ${loggedArgs.join(' ')}`)
|
|
2369
2392
|
try {
|
|
2370
2393
|
await cmd.run(rest)
|
|
2371
|
-
|
|
2372
|
-
|
|
2394
|
+
if (modName !== 'deploy' || cmdName !== 'railway') {
|
|
2395
|
+
const ms = Date.now() - started
|
|
2396
|
+
console.log(`⏱️ Done in ${ms}ms`)
|
|
2397
|
+
}
|
|
2373
2398
|
return 0
|
|
2374
2399
|
} catch (e: any) {
|
|
2375
2400
|
console.error(`💥 Failed: ${formatCliFailureMessage(modName, cmdName, e)}`)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|