@geekmidas/cli 10.0.0-alpha.10 → 10.0.0-alpha.11

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.
Files changed (138) hide show
  1. package/dist/{CachedStateProvider-CqPdW7CB.cjs → CachedStateProvider-BEBl2wQT.cjs} +1 -1
  2. package/dist/{CachedStateProvider-CqPdW7CB.cjs.map → CachedStateProvider-BEBl2wQT.cjs.map} +1 -1
  3. package/dist/CachedStateProvider-C-8wtlto.mjs +3 -0
  4. package/dist/{CachedStateProvider-DTniehMP.mjs → CachedStateProvider-Co4n5Wvs.mjs} +1 -1
  5. package/dist/{CachedStateProvider-DTniehMP.mjs.map → CachedStateProvider-Co4n5Wvs.mjs.map} +1 -1
  6. package/dist/{CachedStateProvider-BLo7zv7S.cjs → CachedStateProvider-DqhGpzsm.cjs} +1 -1
  7. package/dist/{HostingerProvider-h3EbEp-Z.cjs → HostingerProvider-BOvsgATO.cjs} +1 -1
  8. package/dist/{HostingerProvider-h3EbEp-Z.cjs.map → HostingerProvider-BOvsgATO.cjs.map} +1 -1
  9. package/dist/{HostingerProvider-Cft7lEYr.mjs → HostingerProvider-BcyFRbqV.mjs} +1 -1
  10. package/dist/{HostingerProvider-Cft7lEYr.mjs.map → HostingerProvider-BcyFRbqV.mjs.map} +1 -1
  11. package/dist/{LocalStateProvider-Bn6tS-oL.mjs → LocalStateProvider-Bq-0C0sg.mjs} +1 -1
  12. package/dist/{LocalStateProvider-Bn6tS-oL.mjs.map → LocalStateProvider-Bq-0C0sg.mjs.map} +1 -1
  13. package/dist/{LocalStateProvider-Db9SEjyH.cjs → LocalStateProvider-yjXZXZDM.cjs} +1 -1
  14. package/dist/{LocalStateProvider-Db9SEjyH.cjs.map → LocalStateProvider-yjXZXZDM.cjs.map} +1 -1
  15. package/dist/{Route53Provider-RdpUDJQk.mjs → Route53Provider-C0xmer8U.mjs} +1 -1
  16. package/dist/{Route53Provider-RdpUDJQk.mjs.map → Route53Provider-C0xmer8U.mjs.map} +1 -1
  17. package/dist/{Route53Provider-di2fMM5N.cjs → Route53Provider-CH9XH7bz.cjs} +1 -1
  18. package/dist/{Route53Provider-di2fMM5N.cjs.map → Route53Provider-CH9XH7bz.cjs.map} +1 -1
  19. package/dist/{SSMStateProvider-DyX8s9HI.cjs → SSMStateProvider-CXtNgPfy.cjs} +1 -1
  20. package/dist/{SSMStateProvider-DyX8s9HI.cjs.map → SSMStateProvider-CXtNgPfy.cjs.map} +1 -1
  21. package/dist/{SSMStateProvider-BRt2py-A.mjs → SSMStateProvider-DOZifZfE.mjs} +1 -1
  22. package/dist/{SSMStateProvider-BRt2py-A.mjs.map → SSMStateProvider-DOZifZfE.mjs.map} +1 -1
  23. package/dist/{backup-provisioner-Bgj5Vi_L.mjs → backup-provisioner-DXXg6FIL.mjs} +1 -1
  24. package/dist/{backup-provisioner-Bgj5Vi_L.mjs.map → backup-provisioner-DXXg6FIL.mjs.map} +1 -1
  25. package/dist/{backup-provisioner-BrsHwYG0.cjs → backup-provisioner-cE2PuCTb.cjs} +1 -1
  26. package/dist/{backup-provisioner-BrsHwYG0.cjs.map → backup-provisioner-cE2PuCTb.cjs.map} +1 -1
  27. package/dist/{bundler-BY1OmV1e.cjs → bundler-CaTGtiaO.cjs} +3 -3
  28. package/dist/{bundler-BY1OmV1e.cjs.map → bundler-CaTGtiaO.cjs.map} +1 -1
  29. package/dist/{bundler-Be8Zg4Wd.mjs → bundler-S3ek7ea-.mjs} +3 -3
  30. package/dist/{bundler-Be8Zg4Wd.mjs.map → bundler-S3ek7ea-.mjs.map} +1 -1
  31. package/dist/{config-DVVph9yz.mjs → config-B0L2tvvC.mjs} +2 -2
  32. package/dist/{config-DVVph9yz.mjs.map → config-B0L2tvvC.mjs.map} +1 -1
  33. package/dist/{config-BZ1F0WuA.cjs → config-HhDpJmLO.cjs} +2 -2
  34. package/dist/{config-BZ1F0WuA.cjs.map → config-HhDpJmLO.cjs.map} +1 -1
  35. package/dist/config.cjs +2 -2
  36. package/dist/config.d.mts +2 -2
  37. package/dist/config.mjs +2 -2
  38. package/dist/{credentials-Xamqe_NJ.cjs → credentials-B2Pyh3bJ.cjs} +5 -5
  39. package/dist/{credentials-Xamqe_NJ.cjs.map → credentials-B2Pyh3bJ.cjs.map} +1 -1
  40. package/dist/{credentials-dP8vRVRv.mjs → credentials-CZrys9C5.mjs} +5 -5
  41. package/dist/{credentials-dP8vRVRv.mjs.map → credentials-CZrys9C5.mjs.map} +1 -1
  42. package/dist/dokploy-api-5cK2InBm.cjs +3 -0
  43. package/dist/dokploy-api-D2Ny4Jrc.mjs +3 -0
  44. package/dist/{dokploy-api-aTFPz7_4.mjs → dokploy-api-pdaBryoY.mjs} +1 -1
  45. package/dist/{dokploy-api-aTFPz7_4.mjs.map → dokploy-api-pdaBryoY.mjs.map} +1 -1
  46. package/dist/{dokploy-api-BsVH0y_s.cjs → dokploy-api-zqKe9lHH.cjs} +1 -1
  47. package/dist/{dokploy-api-BsVH0y_s.cjs.map → dokploy-api-zqKe9lHH.cjs.map} +1 -1
  48. package/dist/{emit-CiZS_5Ub.mjs → emit-CIlvnDvV.mjs} +1 -1
  49. package/dist/{emit-CiZS_5Ub.mjs.map → emit-CIlvnDvV.mjs.map} +1 -1
  50. package/dist/{emit-CbcRolsa.cjs → emit-CUD1BWls.cjs} +1 -1
  51. package/dist/{emit-CbcRolsa.cjs.map → emit-CUD1BWls.cjs.map} +1 -1
  52. package/dist/{encryption-C6jaU0hE.cjs → encryption-D2pL3tHH.cjs} +1 -1
  53. package/dist/{encryption-C6jaU0hE.cjs.map → encryption-D2pL3tHH.cjs.map} +1 -1
  54. package/dist/encryption-YDsXXi6w.mjs +3 -0
  55. package/dist/{encryption-D-abyhZx.mjs → encryption-_4zwjOAR.mjs} +1 -1
  56. package/dist/{encryption-D-abyhZx.mjs.map → encryption-_4zwjOAR.mjs.map} +1 -1
  57. package/dist/{encryption-CHzzeR8a.cjs → encryption-sQ2Oxx0d.cjs} +1 -1
  58. package/dist/{fullstack-secrets-C-GGohke.cjs → fullstack-secrets-D6MyHhQP.cjs} +1 -1
  59. package/dist/{fullstack-secrets-C-GGohke.cjs.map → fullstack-secrets-D6MyHhQP.cjs.map} +1 -1
  60. package/dist/{fullstack-secrets-D1o9-G5l.mjs → fullstack-secrets-METaRLS1.mjs} +1 -1
  61. package/dist/{fullstack-secrets-D1o9-G5l.mjs.map → fullstack-secrets-METaRLS1.mjs.map} +1 -1
  62. package/dist/github-BrvaPkFf.cjs +197 -0
  63. package/dist/github-BrvaPkFf.cjs.map +1 -0
  64. package/dist/github-CrpsXSfV.mjs +196 -0
  65. package/dist/github-CrpsXSfV.mjs.map +1 -0
  66. package/dist/{index-C6e-ULLx.d.mts → index-Ayxg_DQY.d.mts} +2 -2
  67. package/dist/{index-C6e-ULLx.d.mts.map → index-Ayxg_DQY.d.mts.map} +1 -1
  68. package/dist/index.cjs +109 -63
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.mjs +108 -62
  71. package/dist/index.mjs.map +1 -1
  72. package/dist/keystore-C9rint2E.cjs +101 -0
  73. package/dist/keystore-C9rint2E.cjs.map +1 -0
  74. package/dist/keystore-TxeYM7an.mjs +83 -0
  75. package/dist/keystore-TxeYM7an.mjs.map +1 -0
  76. package/dist/{openapi-SjsgARie.cjs → openapi-DaKlTKxz.cjs} +2 -2
  77. package/dist/{openapi-SjsgARie.cjs.map → openapi-DaKlTKxz.cjs.map} +1 -1
  78. package/dist/{openapi-react-query-CmJ1xDbn.cjs → openapi-react-query-BKH334Ug.cjs} +1 -1
  79. package/dist/{openapi-react-query-CmJ1xDbn.cjs.map → openapi-react-query-BKH334Ug.cjs.map} +1 -1
  80. package/dist/{openapi-react-query-Byltvm_7.mjs → openapi-react-query-DoR5CmzQ.mjs} +1 -1
  81. package/dist/{openapi-react-query-Byltvm_7.mjs.map → openapi-react-query-DoR5CmzQ.mjs.map} +1 -1
  82. package/dist/openapi-react-query.cjs +1 -1
  83. package/dist/openapi-react-query.mjs +1 -1
  84. package/dist/{openapi-Xx0A7Wg0.mjs → openapi-y1d7Kalt.mjs} +2 -2
  85. package/dist/{openapi-Xx0A7Wg0.mjs.map → openapi-y1d7Kalt.mjs.map} +1 -1
  86. package/dist/openapi.cjs +3 -3
  87. package/dist/openapi.d.mts +1 -1
  88. package/dist/openapi.mjs +3 -3
  89. package/dist/reconcile/public.cjs +1 -1
  90. package/dist/reconcile/public.d.mts +1 -1
  91. package/dist/reconcile/public.mjs +1 -1
  92. package/dist/{reconcile-CFs8C_1a.mjs → reconcile-C13ERt1U.mjs} +2 -2
  93. package/dist/{reconcile-CFs8C_1a.mjs.map → reconcile-C13ERt1U.mjs.map} +1 -1
  94. package/dist/{reconcile-D0pimNiy.cjs → reconcile-CYMhFSYy.cjs} +2 -2
  95. package/dist/{reconcile-D0pimNiy.cjs.map → reconcile-CYMhFSYy.cjs.map} +1 -1
  96. package/dist/setup-BWgMs4gg.mjs +12 -0
  97. package/dist/{setup-hC6hI86f.cjs → setup-DOv92pIu.cjs} +6 -6
  98. package/dist/{setup-hC6hI86f.cjs.map → setup-DOv92pIu.cjs.map} +1 -1
  99. package/dist/{setup-C8KOx8_8.mjs → setup-DQo_h_yK.mjs} +6 -6
  100. package/dist/{setup-C8KOx8_8.mjs.map → setup-DQo_h_yK.mjs.map} +1 -1
  101. package/dist/setup-lCx_DcUo.cjs +12 -0
  102. package/dist/{storage-Bi24WfoW.mjs → storage-B020InPW.mjs} +4 -79
  103. package/dist/storage-B020InPW.mjs.map +1 -0
  104. package/dist/{storage-BJmzYxt8.cjs → storage-CSNplaJn.cjs} +4 -85
  105. package/dist/storage-CSNplaJn.cjs.map +1 -0
  106. package/dist/{storage-CYlGwWTj.mjs → storage-DGBzMLZa.mjs} +2 -1
  107. package/dist/{storage-BM9hGpgv.cjs → storage-DlVol_oj.cjs} +2 -1
  108. package/dist/{sync-SizaChmC.cjs → sync-0ILCb-1S.cjs} +2 -2
  109. package/dist/{sync-SizaChmC.cjs.map → sync-0ILCb-1S.cjs.map} +1 -1
  110. package/dist/{sync-CmEuNZsB.mjs → sync-CzHXiR9c.mjs} +2 -2
  111. package/dist/{sync-CmEuNZsB.mjs.map → sync-CzHXiR9c.mjs.map} +1 -1
  112. package/dist/sync-DYENfOt4.cjs +4 -0
  113. package/dist/{sync-hOqAWHR6.mjs → sync-HAau6h_R.mjs} +1 -1
  114. package/dist/{types-6pkp2RRj.d.mts → types-CL7jPFM2.d.mts} +1 -1
  115. package/dist/{types-6pkp2RRj.d.mts.map → types-CL7jPFM2.d.mts.map} +1 -1
  116. package/dist/workspace/index.cjs +1 -1
  117. package/dist/workspace/index.d.mts +2 -2
  118. package/dist/workspace/index.mjs +1 -1
  119. package/dist/{workspace-C6VJQVtG.cjs → workspace-C-a3G_U0.cjs} +30 -4
  120. package/dist/workspace-C-a3G_U0.cjs.map +1 -0
  121. package/dist/workspace-DQxxs7Jk.cjs +10 -0
  122. package/dist/{workspace-zoqRbihZ.mjs → workspace-DaEX7FEg.mjs} +25 -5
  123. package/dist/workspace-DaEX7FEg.mjs.map +1 -0
  124. package/dist/workspace-DbI580qS.mjs +9 -0
  125. package/package.json +11 -11
  126. package/dist/CachedStateProvider-BxoAm-B2.mjs +0 -3
  127. package/dist/dokploy-api-BS2xnJLZ.mjs +0 -3
  128. package/dist/dokploy-api-BuxDRo3l.cjs +0 -3
  129. package/dist/encryption-CQUncu7v.mjs +0 -3
  130. package/dist/setup-BA8ciTPU.mjs +0 -11
  131. package/dist/setup-BsZvZP6f.cjs +0 -11
  132. package/dist/storage-BJmzYxt8.cjs.map +0 -1
  133. package/dist/storage-Bi24WfoW.mjs.map +0 -1
  134. package/dist/sync-D306yOWu.cjs +0 -4
  135. package/dist/workspace-BzrG_2SI.mjs +0 -8
  136. package/dist/workspace-C6VJQVtG.cjs.map +0 -1
  137. package/dist/workspace-XXtNhqJl.cjs +0 -9
  138. package/dist/workspace-zoqRbihZ.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-B020InPW.mjs","names":["stage: string","secrets: StageSecrets","keyHex: string","data: EncryptedSecretsFile","key: string","value: string","updated: StageSecrets","password: string","requiredVars: string[]","missing: string[]","provided: string[]"],"sources":["../src/secrets/storage.ts"],"sourcesContent":["import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { getOrCreateKey, readKey } from './keystore';\nimport type { EmbeddableSecrets, StageSecrets } from './types';\n\n/** Default secrets directory relative to project root */\nconst SECRETS_DIR = '.gkm/secrets';\n\n/** AES-256-GCM configuration */\nconst ALGORITHM = 'aes-256-gcm';\nconst IV_LENGTH = 12; // 96 bits for GCM\nconst AUTH_TAG_LENGTH = 16; // 128 bits\n\n/** Encrypted secrets file structure */\ninterface EncryptedSecretsFile {\n\t/** Version for future format changes */\n\tversion: 1;\n\t/** Base64 encoded encrypted data (ciphertext + auth tag) */\n\tencrypted: string;\n\t/** Hex encoded IV */\n\tiv: string;\n}\n\n/**\n * Get the secrets directory path.\n */\nexport function getSecretsDir(cwd = process.cwd()): string {\n\treturn join(cwd, SECRETS_DIR);\n}\n\n/**\n * Get the secrets file path for a stage.\n */\nexport function getSecretsPath(stage: string, cwd = process.cwd()): string {\n\treturn join(getSecretsDir(cwd), `${stage}.json`);\n}\n\n/**\n * Check if secrets exist for a stage.\n */\nexport function secretsExist(stage: string, cwd = process.cwd()): boolean {\n\treturn existsSync(getSecretsPath(stage, cwd));\n}\n\n/**\n * Initialize an empty StageSecrets object for a stage.\n */\nexport function initStageSecrets(stage: string): StageSecrets {\n\tconst now = new Date().toISOString();\n\treturn {\n\t\tstage,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tservices: {},\n\t\turls: {},\n\t\tcustom: {},\n\t};\n}\n\n/**\n * Encrypt secrets using a key.\n */\nfunction encryptSecretsData(\n\tsecrets: StageSecrets,\n\tkeyHex: string,\n): EncryptedSecretsFile {\n\tconst key = Buffer.from(keyHex, 'hex');\n\tconst iv = randomBytes(IV_LENGTH);\n\n\t// Serialize secrets to JSON\n\tconst plaintext = JSON.stringify(secrets);\n\n\t// Encrypt\n\tconst cipher = createCipheriv(ALGORITHM, key, iv);\n\tconst ciphertext = Buffer.concat([\n\t\tcipher.update(plaintext, 'utf-8'),\n\t\tcipher.final(),\n\t]);\n\n\t// Get auth tag\n\tconst authTag = cipher.getAuthTag();\n\n\t// Combine ciphertext + auth tag\n\tconst combined = Buffer.concat([ciphertext, authTag]);\n\n\treturn {\n\t\tversion: 1,\n\t\tencrypted: combined.toString('base64'),\n\t\tiv: iv.toString('hex'),\n\t};\n}\n\n/**\n * Decrypt secrets using a key.\n */\nfunction decryptSecretsData(\n\tdata: EncryptedSecretsFile,\n\tkeyHex: string,\n): StageSecrets {\n\tconst key = Buffer.from(keyHex, 'hex');\n\tconst ivBuffer = Buffer.from(data.iv, 'hex');\n\tconst combined = Buffer.from(data.encrypted, 'base64');\n\n\t// Split ciphertext and auth tag\n\tconst ciphertext = combined.subarray(0, -AUTH_TAG_LENGTH);\n\tconst authTag = combined.subarray(-AUTH_TAG_LENGTH);\n\n\t// Decrypt\n\tconst decipher = createDecipheriv(ALGORITHM, key, ivBuffer);\n\tdecipher.setAuthTag(authTag);\n\n\tconst plaintext = Buffer.concat([\n\t\tdecipher.update(ciphertext),\n\t\tdecipher.final(),\n\t]);\n\n\treturn JSON.parse(plaintext.toString('utf-8')) as StageSecrets;\n}\n\n/**\n * Read secrets for a stage (encrypted).\n * Requires the decryption key to be present at ~/.gkm/{project}/{stage}.key\n *\n * @returns StageSecrets or null if not found\n */\nexport async function readStageSecrets(\n\tstage: string,\n\tcwd = process.cwd(),\n): Promise<StageSecrets | null> {\n\tconst path = getSecretsPath(stage, cwd);\n\n\tif (!existsSync(path)) {\n\t\treturn null;\n\t}\n\n\tconst content = await readFile(path, 'utf-8');\n\tconst data = JSON.parse(content);\n\n\t// Check if this is an encrypted file (has version field)\n\tif (data.version === 1 && data.encrypted && data.iv) {\n\t\tconst projectName = basename(cwd);\n\t\tconst key = await readKey(stage, projectName);\n\n\t\tif (!key) {\n\t\t\tthrow new Error(\n\t\t\t\t`Decryption key not found for stage \"${stage}\". ` +\n\t\t\t\t\t`Expected key at: ~/.gkm/${projectName}/${stage}.key`,\n\t\t\t);\n\t\t}\n\n\t\treturn decryptSecretsData(data as EncryptedSecretsFile, key);\n\t}\n\n\t// Legacy: unencrypted format (for backwards compatibility)\n\treturn data as StageSecrets;\n}\n\n/**\n * Write secrets for a stage (encrypted).\n * Creates or uses existing encryption key at ~/.gkm/{project}/{stage}.key\n */\nexport async function writeStageSecrets(\n\tsecrets: StageSecrets,\n\tcwd = process.cwd(),\n): Promise<void> {\n\tconst dir = getSecretsDir(cwd);\n\tconst path = getSecretsPath(secrets.stage, cwd);\n\tconst projectName = basename(cwd);\n\n\t// Ensure directory exists\n\tawait mkdir(dir, { recursive: true });\n\n\t// Get or create encryption key\n\tconst key = await getOrCreateKey(secrets.stage, projectName);\n\n\t// Encrypt and write\n\tconst encrypted = encryptSecretsData(secrets, key);\n\tawait writeFile(path, JSON.stringify(encrypted, null, 2), 'utf-8');\n}\n\n/**\n * Convert StageSecrets to embeddable format (flat key-value pairs).\n * This is what gets encrypted and embedded in the bundle.\n */\nexport function toEmbeddableSecrets(secrets: StageSecrets): EmbeddableSecrets {\n\treturn {\n\t\t...secrets.urls,\n\t\t...secrets.custom,\n\t\t// Also include individual service credentials if needed\n\t\t...(secrets.services.postgres && {\n\t\t\tPOSTGRES_USER: secrets.services.postgres.username,\n\t\t\tPOSTGRES_PASSWORD: secrets.services.postgres.password,\n\t\t\tPOSTGRES_DB: secrets.services.postgres.database ?? 'app',\n\t\t\tPOSTGRES_HOST: secrets.services.postgres.host,\n\t\t\tPOSTGRES_PORT: String(secrets.services.postgres.port),\n\t\t}),\n\t\t...(secrets.services.redis && {\n\t\t\tREDIS_PASSWORD: secrets.services.redis.password,\n\t\t\tREDIS_HOST: secrets.services.redis.host,\n\t\t\tREDIS_PORT: String(secrets.services.redis.port),\n\t\t}),\n\t\t...(secrets.services.rabbitmq && {\n\t\t\tRABBITMQ_USER: secrets.services.rabbitmq.username,\n\t\t\tRABBITMQ_PASSWORD: secrets.services.rabbitmq.password,\n\t\t\tRABBITMQ_HOST: secrets.services.rabbitmq.host,\n\t\t\tRABBITMQ_PORT: String(secrets.services.rabbitmq.port),\n\t\t\tRABBITMQ_VHOST: secrets.services.rabbitmq.vhost ?? '/',\n\t\t}),\n\t\t...(secrets.services.minio && {\n\t\t\tSTORAGE_ACCESS_KEY_ID: secrets.services.minio.username,\n\t\t\tSTORAGE_SECRET_ACCESS_KEY: secrets.services.minio.password,\n\t\t\tSTORAGE_BUCKET: secrets.services.minio.bucket ?? 'app',\n\t\t\tSTORAGE_REGION: 'eu-west-1',\n\t\t\tSTORAGE_FORCE_PATH_STYLE: 'true',\n\t\t}),\n\t\t...(secrets.services.mailpit && {\n\t\t\tSMTP_HOST: secrets.services.mailpit.host,\n\t\t\tSMTP_PORT: String(secrets.services.mailpit.port),\n\t\t\tSMTP_USER: secrets.services.mailpit.username,\n\t\t\tSMTP_PASS: secrets.services.mailpit.password,\n\t\t\tSMTP_SECURE: 'false',\n\t\t\tMAIL_FROM: 'noreply@localhost',\n\t\t}),\n\t\t...(secrets.services.localstack && {\n\t\t\tAWS_ACCESS_KEY_ID:\n\t\t\t\tsecrets.services.localstack.accessKeyId ??\n\t\t\t\tsecrets.services.localstack.username,\n\t\t\tAWS_SECRET_ACCESS_KEY: secrets.services.localstack.password,\n\t\t\tAWS_REGION: secrets.services.localstack.region ?? 'us-east-1',\n\t\t\tAWS_ENDPOINT_URL: `http://${secrets.services.localstack.host}:${secrets.services.localstack.port}`,\n\t\t}),\n\t\t...(secrets.services.pgboss && {\n\t\t\tPGBOSS_DB_USER: secrets.services.pgboss.username,\n\t\t\tPGBOSS_DB_PASSWORD: secrets.services.pgboss.password,\n\t\t}),\n\t};\n}\n\n/**\n * Update a custom secret in the secrets file.\n */\nexport async function setCustomSecret(\n\tstage: string,\n\tkey: string,\n\tvalue: string,\n\tcwd = process.cwd(),\n): Promise<StageSecrets> {\n\tconst secrets = await readStageSecrets(stage, cwd);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`Secrets not found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tconst updated: StageSecrets = {\n\t\t...secrets,\n\t\tupdatedAt: new Date().toISOString(),\n\t\tcustom: {\n\t\t\t...secrets.custom,\n\t\t\t[key]: value,\n\t\t},\n\t};\n\n\tawait writeStageSecrets(updated, cwd);\n\treturn updated;\n}\n\n/**\n * Mask a password for display (show first 4 and last 2 chars).\n */\nexport function maskPassword(password: string): string {\n\tif (password.length <= 8) {\n\t\treturn '********';\n\t}\n\treturn `${password.slice(0, 4)}${'*'.repeat(password.length - 6)}${password.slice(-2)}`;\n}\n\n/**\n * Result of environment variable validation.\n */\nexport interface EnvValidationResult {\n\t/** Whether all required environment variables are present */\n\tvalid: boolean;\n\t/** List of missing environment variable names */\n\tmissing: string[];\n\t/** List of environment variables that are provided */\n\tprovided: string[];\n\t/** List of environment variables that were required */\n\trequired: string[];\n}\n\n/**\n * Validate that all required environment variables are present in secrets.\n *\n * @param requiredVars - Array of environment variable names required by the application\n * @param secrets - Stage secrets to validate against\n * @returns Validation result with missing and provided variables\n *\n * @example\n * ```typescript\n * const required = ['DATABASE_URL', 'API_KEY', 'JWT_SECRET'];\n * const secrets = await readStageSecrets('production');\n * const result = validateEnvironmentVariables(required, secrets);\n *\n * if (!result.valid) {\n * console.error(`Missing environment variables: ${result.missing.join(', ')}`);\n * }\n * ```\n */\nexport function validateEnvironmentVariables(\n\trequiredVars: string[],\n\tsecrets: StageSecrets,\n): EnvValidationResult {\n\tconst embeddable = toEmbeddableSecrets(secrets);\n\tconst availableVars = new Set(Object.keys(embeddable));\n\n\tconst missing: string[] = [];\n\tconst provided: string[] = [];\n\n\tfor (const varName of requiredVars) {\n\t\tif (availableVars.has(varName)) {\n\t\t\tprovided.push(varName);\n\t\t} else {\n\t\t\tmissing.push(varName);\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: missing.length === 0,\n\t\tmissing: missing.sort(),\n\t\tprovided: provided.sort(),\n\t\trequired: [...requiredVars].sort(),\n\t};\n}\n"],"mappings":"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"}
@@ -1,85 +1,10 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_keystore = require('./keystore-C9rint2E.cjs');
2
3
  const node_fs = require_chunk.__toESM(require("node:fs"));
3
4
  const node_path = require_chunk.__toESM(require("node:path"));
4
5
  const node_fs_promises = require_chunk.__toESM(require("node:fs/promises"));
5
- const node_os = require_chunk.__toESM(require("node:os"));
6
6
  const node_crypto = require_chunk.__toESM(require("node:crypto"));
7
7
 
8
- //#region src/secrets/keystore.ts
9
- /** Key length for AES-256 encryption */
10
- const KEY_LENGTH = 32;
11
- /**
12
- * Get the keystore directory for a project.
13
- * Keys are stored at ~/.gkm/{project-name}/
14
- *
15
- * @param projectName - Name of the project (defaults to current directory name)
16
- * @returns Path to the keystore directory
17
- */
18
- function getKeystoreDir(projectName) {
19
- const name = projectName ?? (0, node_path.basename)(process.cwd());
20
- return (0, node_path.join)((0, node_os.homedir)(), ".gkm", name);
21
- }
22
- /**
23
- * Get the path to a stage's encryption key.
24
- *
25
- * @param stage - Stage name (e.g., 'development', 'production')
26
- * @param projectName - Name of the project (defaults to current directory name)
27
- * @returns Path to the key file
28
- */
29
- function getKeyPath(stage, projectName) {
30
- return (0, node_path.join)(getKeystoreDir(projectName), `${stage}.key`);
31
- }
32
- /**
33
- * Generate a new encryption key for a stage.
34
- * The key is stored at ~/.gkm/{project-name}/{stage}.key with restricted permissions.
35
- *
36
- * @param stage - Stage name
37
- * @param projectName - Project name (defaults to current directory name)
38
- * @returns The generated key as a hex string
39
- */
40
- async function generateKey(stage, projectName) {
41
- const keyDir = getKeystoreDir(projectName);
42
- const keyPath = getKeyPath(stage, projectName);
43
- await (0, node_fs_promises.mkdir)(keyDir, {
44
- recursive: true,
45
- mode: 448
46
- });
47
- const key = (0, node_crypto.randomBytes)(KEY_LENGTH).toString("hex");
48
- await (0, node_fs_promises.writeFile)(keyPath, key, {
49
- mode: 384,
50
- encoding: "utf-8"
51
- });
52
- await (0, node_fs_promises.chmod)(keyPath, 384);
53
- return key;
54
- }
55
- /**
56
- * Read an encryption key for a stage.
57
- *
58
- * @param stage - Stage name
59
- * @param projectName - Project name (defaults to current directory name)
60
- * @returns The key as a hex string, or null if not found
61
- */
62
- async function readKey(stage, projectName) {
63
- const keyPath = getKeyPath(stage, projectName);
64
- if (!(0, node_fs.existsSync)(keyPath)) return null;
65
- const key = await (0, node_fs_promises.readFile)(keyPath, "utf-8");
66
- return key.trim();
67
- }
68
- /**
69
- * Get or create a key for a stage.
70
- * If the key already exists, it is returned. Otherwise, a new key is generated.
71
- *
72
- * @param stage - Stage name
73
- * @param projectName - Project name (defaults to current directory name)
74
- * @returns The key as a hex string
75
- */
76
- async function getOrCreateKey(stage, projectName) {
77
- const existingKey = await readKey(stage, projectName);
78
- if (existingKey) return existingKey;
79
- return generateKey(stage, projectName);
80
- }
81
-
82
- //#endregion
83
8
  //#region src/secrets/storage.ts
84
9
  /** Default secrets directory relative to project root */
85
10
  const SECRETS_DIR = ".gkm/secrets";
@@ -163,7 +88,7 @@ async function readStageSecrets(stage, cwd = process.cwd()) {
163
88
  const data = JSON.parse(content);
164
89
  if (data.version === 1 && data.encrypted && data.iv) {
165
90
  const projectName = (0, node_path.basename)(cwd);
166
- const key = await readKey(stage, projectName);
91
+ const key = await require_keystore.readKey(stage, projectName);
167
92
  if (!key) throw new Error(`Decryption key not found for stage "${stage}". Expected key at: ~/.gkm/${projectName}/${stage}.key`);
168
93
  return decryptSecretsData(data, key);
169
94
  }
@@ -178,7 +103,7 @@ async function writeStageSecrets(secrets, cwd = process.cwd()) {
178
103
  const path = getSecretsPath(secrets.stage, cwd);
179
104
  const projectName = (0, node_path.basename)(cwd);
180
105
  await (0, node_fs_promises.mkdir)(dir, { recursive: true });
181
- const key = await getOrCreateKey(secrets.stage, projectName);
106
+ const key = await require_keystore.getOrCreateKey(secrets.stage, projectName);
182
107
  const encrypted = encryptSecretsData(secrets, key);
183
108
  await (0, node_fs_promises.writeFile)(path, JSON.stringify(encrypted, null, 2), "utf-8");
184
109
  }
@@ -294,12 +219,6 @@ function validateEnvironmentVariables(requiredVars, secrets) {
294
219
  }
295
220
 
296
221
  //#endregion
297
- Object.defineProperty(exports, 'getKeyPath', {
298
- enumerable: true,
299
- get: function () {
300
- return getKeyPath;
301
- }
302
- });
303
222
  Object.defineProperty(exports, 'getSecretsDir', {
304
223
  enumerable: true,
305
224
  get: function () {
@@ -360,4 +279,4 @@ Object.defineProperty(exports, 'writeStageSecrets', {
360
279
  return writeStageSecrets;
361
280
  }
362
281
  });
363
- //# sourceMappingURL=storage-BJmzYxt8.cjs.map
282
+ //# sourceMappingURL=storage-CSNplaJn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-CSNplaJn.cjs","names":["stage: string","secrets: StageSecrets","keyHex: string","data: EncryptedSecretsFile","key: string","value: string","updated: StageSecrets","password: string","requiredVars: string[]","missing: string[]","provided: string[]"],"sources":["../src/secrets/storage.ts"],"sourcesContent":["import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { getOrCreateKey, readKey } from './keystore';\nimport type { EmbeddableSecrets, StageSecrets } from './types';\n\n/** Default secrets directory relative to project root */\nconst SECRETS_DIR = '.gkm/secrets';\n\n/** AES-256-GCM configuration */\nconst ALGORITHM = 'aes-256-gcm';\nconst IV_LENGTH = 12; // 96 bits for GCM\nconst AUTH_TAG_LENGTH = 16; // 128 bits\n\n/** Encrypted secrets file structure */\ninterface EncryptedSecretsFile {\n\t/** Version for future format changes */\n\tversion: 1;\n\t/** Base64 encoded encrypted data (ciphertext + auth tag) */\n\tencrypted: string;\n\t/** Hex encoded IV */\n\tiv: string;\n}\n\n/**\n * Get the secrets directory path.\n */\nexport function getSecretsDir(cwd = process.cwd()): string {\n\treturn join(cwd, SECRETS_DIR);\n}\n\n/**\n * Get the secrets file path for a stage.\n */\nexport function getSecretsPath(stage: string, cwd = process.cwd()): string {\n\treturn join(getSecretsDir(cwd), `${stage}.json`);\n}\n\n/**\n * Check if secrets exist for a stage.\n */\nexport function secretsExist(stage: string, cwd = process.cwd()): boolean {\n\treturn existsSync(getSecretsPath(stage, cwd));\n}\n\n/**\n * Initialize an empty StageSecrets object for a stage.\n */\nexport function initStageSecrets(stage: string): StageSecrets {\n\tconst now = new Date().toISOString();\n\treturn {\n\t\tstage,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tservices: {},\n\t\turls: {},\n\t\tcustom: {},\n\t};\n}\n\n/**\n * Encrypt secrets using a key.\n */\nfunction encryptSecretsData(\n\tsecrets: StageSecrets,\n\tkeyHex: string,\n): EncryptedSecretsFile {\n\tconst key = Buffer.from(keyHex, 'hex');\n\tconst iv = randomBytes(IV_LENGTH);\n\n\t// Serialize secrets to JSON\n\tconst plaintext = JSON.stringify(secrets);\n\n\t// Encrypt\n\tconst cipher = createCipheriv(ALGORITHM, key, iv);\n\tconst ciphertext = Buffer.concat([\n\t\tcipher.update(plaintext, 'utf-8'),\n\t\tcipher.final(),\n\t]);\n\n\t// Get auth tag\n\tconst authTag = cipher.getAuthTag();\n\n\t// Combine ciphertext + auth tag\n\tconst combined = Buffer.concat([ciphertext, authTag]);\n\n\treturn {\n\t\tversion: 1,\n\t\tencrypted: combined.toString('base64'),\n\t\tiv: iv.toString('hex'),\n\t};\n}\n\n/**\n * Decrypt secrets using a key.\n */\nfunction decryptSecretsData(\n\tdata: EncryptedSecretsFile,\n\tkeyHex: string,\n): StageSecrets {\n\tconst key = Buffer.from(keyHex, 'hex');\n\tconst ivBuffer = Buffer.from(data.iv, 'hex');\n\tconst combined = Buffer.from(data.encrypted, 'base64');\n\n\t// Split ciphertext and auth tag\n\tconst ciphertext = combined.subarray(0, -AUTH_TAG_LENGTH);\n\tconst authTag = combined.subarray(-AUTH_TAG_LENGTH);\n\n\t// Decrypt\n\tconst decipher = createDecipheriv(ALGORITHM, key, ivBuffer);\n\tdecipher.setAuthTag(authTag);\n\n\tconst plaintext = Buffer.concat([\n\t\tdecipher.update(ciphertext),\n\t\tdecipher.final(),\n\t]);\n\n\treturn JSON.parse(plaintext.toString('utf-8')) as StageSecrets;\n}\n\n/**\n * Read secrets for a stage (encrypted).\n * Requires the decryption key to be present at ~/.gkm/{project}/{stage}.key\n *\n * @returns StageSecrets or null if not found\n */\nexport async function readStageSecrets(\n\tstage: string,\n\tcwd = process.cwd(),\n): Promise<StageSecrets | null> {\n\tconst path = getSecretsPath(stage, cwd);\n\n\tif (!existsSync(path)) {\n\t\treturn null;\n\t}\n\n\tconst content = await readFile(path, 'utf-8');\n\tconst data = JSON.parse(content);\n\n\t// Check if this is an encrypted file (has version field)\n\tif (data.version === 1 && data.encrypted && data.iv) {\n\t\tconst projectName = basename(cwd);\n\t\tconst key = await readKey(stage, projectName);\n\n\t\tif (!key) {\n\t\t\tthrow new Error(\n\t\t\t\t`Decryption key not found for stage \"${stage}\". ` +\n\t\t\t\t\t`Expected key at: ~/.gkm/${projectName}/${stage}.key`,\n\t\t\t);\n\t\t}\n\n\t\treturn decryptSecretsData(data as EncryptedSecretsFile, key);\n\t}\n\n\t// Legacy: unencrypted format (for backwards compatibility)\n\treturn data as StageSecrets;\n}\n\n/**\n * Write secrets for a stage (encrypted).\n * Creates or uses existing encryption key at ~/.gkm/{project}/{stage}.key\n */\nexport async function writeStageSecrets(\n\tsecrets: StageSecrets,\n\tcwd = process.cwd(),\n): Promise<void> {\n\tconst dir = getSecretsDir(cwd);\n\tconst path = getSecretsPath(secrets.stage, cwd);\n\tconst projectName = basename(cwd);\n\n\t// Ensure directory exists\n\tawait mkdir(dir, { recursive: true });\n\n\t// Get or create encryption key\n\tconst key = await getOrCreateKey(secrets.stage, projectName);\n\n\t// Encrypt and write\n\tconst encrypted = encryptSecretsData(secrets, key);\n\tawait writeFile(path, JSON.stringify(encrypted, null, 2), 'utf-8');\n}\n\n/**\n * Convert StageSecrets to embeddable format (flat key-value pairs).\n * This is what gets encrypted and embedded in the bundle.\n */\nexport function toEmbeddableSecrets(secrets: StageSecrets): EmbeddableSecrets {\n\treturn {\n\t\t...secrets.urls,\n\t\t...secrets.custom,\n\t\t// Also include individual service credentials if needed\n\t\t...(secrets.services.postgres && {\n\t\t\tPOSTGRES_USER: secrets.services.postgres.username,\n\t\t\tPOSTGRES_PASSWORD: secrets.services.postgres.password,\n\t\t\tPOSTGRES_DB: secrets.services.postgres.database ?? 'app',\n\t\t\tPOSTGRES_HOST: secrets.services.postgres.host,\n\t\t\tPOSTGRES_PORT: String(secrets.services.postgres.port),\n\t\t}),\n\t\t...(secrets.services.redis && {\n\t\t\tREDIS_PASSWORD: secrets.services.redis.password,\n\t\t\tREDIS_HOST: secrets.services.redis.host,\n\t\t\tREDIS_PORT: String(secrets.services.redis.port),\n\t\t}),\n\t\t...(secrets.services.rabbitmq && {\n\t\t\tRABBITMQ_USER: secrets.services.rabbitmq.username,\n\t\t\tRABBITMQ_PASSWORD: secrets.services.rabbitmq.password,\n\t\t\tRABBITMQ_HOST: secrets.services.rabbitmq.host,\n\t\t\tRABBITMQ_PORT: String(secrets.services.rabbitmq.port),\n\t\t\tRABBITMQ_VHOST: secrets.services.rabbitmq.vhost ?? '/',\n\t\t}),\n\t\t...(secrets.services.minio && {\n\t\t\tSTORAGE_ACCESS_KEY_ID: secrets.services.minio.username,\n\t\t\tSTORAGE_SECRET_ACCESS_KEY: secrets.services.minio.password,\n\t\t\tSTORAGE_BUCKET: secrets.services.minio.bucket ?? 'app',\n\t\t\tSTORAGE_REGION: 'eu-west-1',\n\t\t\tSTORAGE_FORCE_PATH_STYLE: 'true',\n\t\t}),\n\t\t...(secrets.services.mailpit && {\n\t\t\tSMTP_HOST: secrets.services.mailpit.host,\n\t\t\tSMTP_PORT: String(secrets.services.mailpit.port),\n\t\t\tSMTP_USER: secrets.services.mailpit.username,\n\t\t\tSMTP_PASS: secrets.services.mailpit.password,\n\t\t\tSMTP_SECURE: 'false',\n\t\t\tMAIL_FROM: 'noreply@localhost',\n\t\t}),\n\t\t...(secrets.services.localstack && {\n\t\t\tAWS_ACCESS_KEY_ID:\n\t\t\t\tsecrets.services.localstack.accessKeyId ??\n\t\t\t\tsecrets.services.localstack.username,\n\t\t\tAWS_SECRET_ACCESS_KEY: secrets.services.localstack.password,\n\t\t\tAWS_REGION: secrets.services.localstack.region ?? 'us-east-1',\n\t\t\tAWS_ENDPOINT_URL: `http://${secrets.services.localstack.host}:${secrets.services.localstack.port}`,\n\t\t}),\n\t\t...(secrets.services.pgboss && {\n\t\t\tPGBOSS_DB_USER: secrets.services.pgboss.username,\n\t\t\tPGBOSS_DB_PASSWORD: secrets.services.pgboss.password,\n\t\t}),\n\t};\n}\n\n/**\n * Update a custom secret in the secrets file.\n */\nexport async function setCustomSecret(\n\tstage: string,\n\tkey: string,\n\tvalue: string,\n\tcwd = process.cwd(),\n): Promise<StageSecrets> {\n\tconst secrets = await readStageSecrets(stage, cwd);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`Secrets not found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tconst updated: StageSecrets = {\n\t\t...secrets,\n\t\tupdatedAt: new Date().toISOString(),\n\t\tcustom: {\n\t\t\t...secrets.custom,\n\t\t\t[key]: value,\n\t\t},\n\t};\n\n\tawait writeStageSecrets(updated, cwd);\n\treturn updated;\n}\n\n/**\n * Mask a password for display (show first 4 and last 2 chars).\n */\nexport function maskPassword(password: string): string {\n\tif (password.length <= 8) {\n\t\treturn '********';\n\t}\n\treturn `${password.slice(0, 4)}${'*'.repeat(password.length - 6)}${password.slice(-2)}`;\n}\n\n/**\n * Result of environment variable validation.\n */\nexport interface EnvValidationResult {\n\t/** Whether all required environment variables are present */\n\tvalid: boolean;\n\t/** List of missing environment variable names */\n\tmissing: string[];\n\t/** List of environment variables that are provided */\n\tprovided: string[];\n\t/** List of environment variables that were required */\n\trequired: string[];\n}\n\n/**\n * Validate that all required environment variables are present in secrets.\n *\n * @param requiredVars - Array of environment variable names required by the application\n * @param secrets - Stage secrets to validate against\n * @returns Validation result with missing and provided variables\n *\n * @example\n * ```typescript\n * const required = ['DATABASE_URL', 'API_KEY', 'JWT_SECRET'];\n * const secrets = await readStageSecrets('production');\n * const result = validateEnvironmentVariables(required, secrets);\n *\n * if (!result.valid) {\n * console.error(`Missing environment variables: ${result.missing.join(', ')}`);\n * }\n * ```\n */\nexport function validateEnvironmentVariables(\n\trequiredVars: string[],\n\tsecrets: StageSecrets,\n): EnvValidationResult {\n\tconst embeddable = toEmbeddableSecrets(secrets);\n\tconst availableVars = new Set(Object.keys(embeddable));\n\n\tconst missing: string[] = [];\n\tconst provided: string[] = [];\n\n\tfor (const varName of requiredVars) {\n\t\tif (availableVars.has(varName)) {\n\t\t\tprovided.push(varName);\n\t\t} else {\n\t\t\tmissing.push(varName);\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: missing.length === 0,\n\t\tmissing: missing.sort(),\n\t\tprovided: provided.sort(),\n\t\trequired: [...requiredVars].sort(),\n\t};\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- import { getSecretsDir, getSecretsPath, initStageSecrets, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, validateEnvironmentVariables, writeStageSecrets } from "./storage-Bi24WfoW.mjs";
1
+ import "./keystore-TxeYM7an.mjs";
2
+ import { getSecretsDir, getSecretsPath, initStageSecrets, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, validateEnvironmentVariables, writeStageSecrets } from "./storage-B020InPW.mjs";
2
3
 
3
4
  export { initStageSecrets, readStageSecrets, toEmbeddableSecrets, validateEnvironmentVariables, writeStageSecrets };
@@ -1,4 +1,5 @@
1
- const require_storage = require('./storage-BJmzYxt8.cjs');
1
+ require('./keystore-C9rint2E.cjs');
2
+ const require_storage = require('./storage-CSNplaJn.cjs');
2
3
 
3
4
  exports.initStageSecrets = require_storage.initStageSecrets;
4
5
  exports.readStageSecrets = require_storage.readStageSecrets;
@@ -30,7 +30,7 @@ async function pushSecrets(stage, workspace) {
30
30
  if (!workspace.name) throw new Error("Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.");
31
31
  const client = createSSMClient(config);
32
32
  const parameterName = getSecretsParameterName(workspace.name, stage);
33
- const { readStageSecrets } = await Promise.resolve().then(() => require("./storage-BM9hGpgv.cjs"));
33
+ const { readStageSecrets } = await Promise.resolve().then(() => require("./storage-DlVol_oj.cjs"));
34
34
  const secrets = await readStageSecrets(stage, workspace.root);
35
35
  if (!secrets) throw new Error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
36
36
  await client.send(new __aws_sdk_client_ssm.PutParameterCommand({
@@ -90,4 +90,4 @@ Object.defineProperty(exports, 'pushSecrets', {
90
90
  return pushSecrets;
91
91
  }
92
92
  });
93
- //# sourceMappingURL=sync-SizaChmC.cjs.map
93
+ //# sourceMappingURL=sync-0ILCb-1S.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-SizaChmC.cjs","names":["workspaceName: string","stage: string","config: SSMStateConfig","clientConfig: SSMClientConfig","SSMClient","workspace: NormalizedWorkspace","PutParameterCommand","GetParameterCommand","ParameterNotFound"],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,wBAAwBA,eAAuBC,OAAuB;AAC9E,SAAQ,OAAO,cAAc,GAAG,MAAM;AACtC;;;;AAKD,SAAS,gBAAgBC,QAAmC;CAC3D,MAAMC,eAAgC,EACrC,QAAQ,OAAO,OACf;AAED,KAAI,OAAO,SAAS;EACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,gCAAgC;AAC5D,eAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAS,EAAC;CAC/D;AAED,QAAO,IAAIC,+BAAU;AACrB;;;;;;AAOD,eAAsB,YACrBH,OACAI,WACgB;CAChB,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,OAAM,IAAI,MACT;AAIF,MAAK,UAAU,KACd,OAAM,IAAI,MACT;CAIF,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;CAEpE,MAAM,EAAE,kBAAkB,GAAG,2CAAM;CACnC,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,KAAK;AAE7D,MAAK,QACJ,OAAM,IAAI,OACR,8BAA8B,MAAM,mCAAmC,MAAM;AAIhF,OAAM,OAAO,KACZ,IAAIC,yCAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,QAAQ;EAC9B,MAAM;EACN,WAAW;EACX,cAAc,kBAAkB,UAAU,KAAK,GAAG,MAAM;CACxD,GACD;AACD;;;;;;AAOD,eAAsB,YACrBL,OACAI,WAC+B;CAC/B,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,QAAO;AAGR,MAAK,UAAU,KACd,QAAO;CAGR,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;AAEpE,KAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAIE,yCAAoB;GACvB,MAAM;GACN,gBAAgB;EAChB,GACD;AAED,OAAK,SAAS,WAAW,MACxB,QAAO;AAGR,SAAO,KAAK,MAAM,SAAS,UAAU,MAAM;CAC3C,SAAQ,OAAO;AACf,MAAI,iBAAiBC,uCACpB,QAAO;AAER,QAAM;CACN;AACD;;;;AAKD,SAAgB,gBAAgBH,WAAyC;AACxE,UAAS,UAAU,SAAS,UAAU,MAAM,aAAa;AACzD"}
1
+ {"version":3,"file":"sync-0ILCb-1S.cjs","names":["workspaceName: string","stage: string","config: SSMStateConfig","clientConfig: SSMClientConfig","SSMClient","workspace: NormalizedWorkspace","PutParameterCommand","GetParameterCommand","ParameterNotFound"],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,wBAAwBA,eAAuBC,OAAuB;AAC9E,SAAQ,OAAO,cAAc,GAAG,MAAM;AACtC;;;;AAKD,SAAS,gBAAgBC,QAAmC;CAC3D,MAAMC,eAAgC,EACrC,QAAQ,OAAO,OACf;AAED,KAAI,OAAO,SAAS;EACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,gCAAgC;AAC5D,eAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAS,EAAC;CAC/D;AAED,QAAO,IAAIC,+BAAU;AACrB;;;;;;AAOD,eAAsB,YACrBH,OACAI,WACgB;CAChB,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,OAAM,IAAI,MACT;AAIF,MAAK,UAAU,KACd,OAAM,IAAI,MACT;CAIF,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;CAEpE,MAAM,EAAE,kBAAkB,GAAG,2CAAM;CACnC,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,KAAK;AAE7D,MAAK,QACJ,OAAM,IAAI,OACR,8BAA8B,MAAM,mCAAmC,MAAM;AAIhF,OAAM,OAAO,KACZ,IAAIC,yCAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,QAAQ;EAC9B,MAAM;EACN,WAAW;EACX,cAAc,kBAAkB,UAAU,KAAK,GAAG,MAAM;CACxD,GACD;AACD;;;;;;AAOD,eAAsB,YACrBL,OACAI,WAC+B;CAC/B,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,QAAO;AAGR,MAAK,UAAU,KACd,QAAO;CAGR,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;AAEpE,KAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAIE,yCAAoB;GACvB,MAAM;GACN,gBAAgB;EAChB,GACD;AAED,OAAK,SAAS,WAAW,MACxB,QAAO;AAGR,SAAO,KAAK,MAAM,SAAS,UAAU,MAAM;CAC3C,SAAQ,OAAO;AACf,MAAI,iBAAiBC,uCACpB,QAAO;AAER,QAAM;CACN;AACD;;;;AAKD,SAAgB,gBAAgBH,WAAyC;AACxE,UAAS,UAAU,SAAS,UAAU,MAAM,aAAa;AACzD"}
@@ -30,7 +30,7 @@ async function pushSecrets(stage, workspace) {
30
30
  if (!workspace.name) throw new Error("Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.");
31
31
  const client = createSSMClient(config);
32
32
  const parameterName = getSecretsParameterName(workspace.name, stage);
33
- const { readStageSecrets } = await import("./storage-CYlGwWTj.mjs");
33
+ const { readStageSecrets } = await import("./storage-DGBzMLZa.mjs");
34
34
  const secrets = await readStageSecrets(stage, workspace.root);
35
35
  if (!secrets) throw new Error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
36
36
  await client.send(new PutParameterCommand({
@@ -73,4 +73,4 @@ function isSSMConfigured(workspace) {
73
73
 
74
74
  //#endregion
75
75
  export { isSSMConfigured, pullSecrets, pushSecrets };
76
- //# sourceMappingURL=sync-CmEuNZsB.mjs.map
76
+ //# sourceMappingURL=sync-CzHXiR9c.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-CmEuNZsB.mjs","names":["workspaceName: string","stage: string","config: SSMStateConfig","clientConfig: SSMClientConfig","workspace: NormalizedWorkspace"],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,wBAAwBA,eAAuBC,OAAuB;AAC9E,SAAQ,OAAO,cAAc,GAAG,MAAM;AACtC;;;;AAKD,SAAS,gBAAgBC,QAAmC;CAC3D,MAAMC,eAAgC,EACrC,QAAQ,OAAO,OACf;AAED,KAAI,OAAO,SAAS;EACnB,MAAM,EAAE,SAAS,GAAG,UAAQ,gCAAgC;AAC5D,eAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAS,EAAC;CAC/D;AAED,QAAO,IAAI,UAAU;AACrB;;;;;;AAOD,eAAsB,YACrBF,OACAG,WACgB;CAChB,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,OAAM,IAAI,MACT;AAIF,MAAK,UAAU,KACd,OAAM,IAAI,MACT;CAIF,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;CAEpE,MAAM,EAAE,kBAAkB,GAAG,MAAM,OAAO;CAC1C,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,KAAK;AAE7D,MAAK,QACJ,OAAM,IAAI,OACR,8BAA8B,MAAM,mCAAmC,MAAM;AAIhF,OAAM,OAAO,KACZ,IAAI,oBAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,QAAQ;EAC9B,MAAM;EACN,WAAW;EACX,cAAc,kBAAkB,UAAU,KAAK,GAAG,MAAM;CACxD,GACD;AACD;;;;;;AAOD,eAAsB,YACrBH,OACAG,WAC+B;CAC/B,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,QAAO;AAGR,MAAK,UAAU,KACd,QAAO;CAGR,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;AAEpE,KAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAI,oBAAoB;GACvB,MAAM;GACN,gBAAgB;EAChB,GACD;AAED,OAAK,SAAS,WAAW,MACxB,QAAO;AAGR,SAAO,KAAK,MAAM,SAAS,UAAU,MAAM;CAC3C,SAAQ,OAAO;AACf,MAAI,iBAAiB,kBACpB,QAAO;AAER,QAAM;CACN;AACD;;;;AAKD,SAAgB,gBAAgBA,WAAyC;AACxE,UAAS,UAAU,SAAS,UAAU,MAAM,aAAa;AACzD"}
1
+ {"version":3,"file":"sync-CzHXiR9c.mjs","names":["workspaceName: string","stage: string","config: SSMStateConfig","clientConfig: SSMClientConfig","workspace: NormalizedWorkspace"],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,wBAAwBA,eAAuBC,OAAuB;AAC9E,SAAQ,OAAO,cAAc,GAAG,MAAM;AACtC;;;;AAKD,SAAS,gBAAgBC,QAAmC;CAC3D,MAAMC,eAAgC,EACrC,QAAQ,OAAO,OACf;AAED,KAAI,OAAO,SAAS;EACnB,MAAM,EAAE,SAAS,GAAG,UAAQ,gCAAgC;AAC5D,eAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAS,EAAC;CAC/D;AAED,QAAO,IAAI,UAAU;AACrB;;;;;;AAOD,eAAsB,YACrBF,OACAG,WACgB;CAChB,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,OAAM,IAAI,MACT;AAIF,MAAK,UAAU,KACd,OAAM,IAAI,MACT;CAIF,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;CAEpE,MAAM,EAAE,kBAAkB,GAAG,MAAM,OAAO;CAC1C,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,KAAK;AAE7D,MAAK,QACJ,OAAM,IAAI,OACR,8BAA8B,MAAM,mCAAmC,MAAM;AAIhF,OAAM,OAAO,KACZ,IAAI,oBAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,QAAQ;EAC9B,MAAM;EACN,WAAW;EACX,cAAc,kBAAkB,UAAU,KAAK,GAAG,MAAM;CACxD,GACD;AACD;;;;;;AAOD,eAAsB,YACrBH,OACAG,WAC+B;CAC/B,MAAM,SAAS,UAAU;AACzB,MAAK,UAAU,OAAO,aAAa,MAClC,QAAO;AAGR,MAAK,UAAU,KACd,QAAO;CAGR,MAAM,SAAS,gBAAgB,OAAyB;CACxD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,MAAM;AAEpE,KAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAI,oBAAoB;GACvB,MAAM;GACN,gBAAgB;EAChB,GACD;AAED,OAAK,SAAS,WAAW,MACxB,QAAO;AAGR,SAAO,KAAK,MAAM,SAAS,UAAU,MAAM;CAC3C,SAAQ,OAAO;AACf,MAAI,iBAAiB,kBACpB,QAAO;AAER,QAAM;CACN;AACD;;;;AAKD,SAAgB,gBAAgBA,WAAyC;AACxE,UAAS,UAAU,SAAS,UAAU,MAAM,aAAa;AACzD"}
@@ -0,0 +1,4 @@
1
+ const require_sync = require('./sync-0ILCb-1S.cjs');
2
+
3
+ exports.pullSecrets = require_sync.pullSecrets;
4
+ exports.pushSecrets = require_sync.pushSecrets;
@@ -1,3 +1,3 @@
1
- import { isSSMConfigured, pullSecrets, pushSecrets } from "./sync-CmEuNZsB.mjs";
1
+ import { isSSMConfigured, pullSecrets, pushSecrets } from "./sync-CzHXiR9c.mjs";
2
2
 
3
3
  export { pullSecrets, pushSecrets };
@@ -2217,4 +2217,4 @@ interface GkmConfig {
2217
2217
  }
2218
2218
  //#endregion
2219
2219
  export { AppConfig, AppConfigInput, AppInput, AppsRecord, BackendFramework, CacheBackend, ConstrainedApps, DeployConfig, DeployTarget, DokployWorkspaceConfig, EmailBackend, Framework, FrontendFramework, GkmConfig, InferAppNames, InferredWorkspaceConfig, LoadedConfig, MailServiceConfig, MobileFramework, ModelsConfig, NormalizedAppConfig, NormalizedWorkspace, OpenApiConfig, PHASE_2_DEPLOY_TARGETS, Routes, SUPPORTED_DEPLOY_TARGETS, SecretsConfig, ServiceImageConfig, ServicesConfig, SharedConfig, WorkspaceConfig, WorkspaceConfigSchema, WorkspaceInput, formatValidationErrors, getDeployTargetError, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, safeValidateWorkspaceConfig, validateWorkspaceConfig };
2220
- //# sourceMappingURL=types-6pkp2RRj.d.mts.map
2220
+ //# sourceMappingURL=types-CL7jPFM2.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-6pkp2RRj.d.mts","names":[],"sources":["../src/deploy/state.ts","../src/deploy/StateProvider.ts","../src/workspace/schema.ts","../src/workspace/types.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"types-CL7jPFM2.d.mts","names":[],"sources":["../src/deploy/state.ts","../src/deploy/StateProvider.ts","../src/workspace/schema.ts","../src/workspace/types.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_workspace = require('../workspace-C6VJQVtG.cjs');
1
+ const require_workspace = require('../workspace-C-a3G_U0.cjs');
2
2
 
3
3
  exports.PHASE_2_DEPLOY_TARGETS = require_workspace.PHASE_2_DEPLOY_TARGETS;
4
4
  exports.PUBLIC_ENV_PREFIXES = require_workspace.PUBLIC_ENV_PREFIXES;
@@ -1,3 +1,3 @@
1
- import { AppConfig, AppConfigInput, AppInput, AppsRecord, BackendFramework, ConstrainedApps, DeployConfig, DeployTarget, DokployWorkspaceConfig, FrontendFramework, InferAppNames, InferredWorkspaceConfig, LoadedConfig, MailServiceConfig, MobileFramework, ModelsConfig, NormalizedAppConfig, NormalizedWorkspace, PHASE_2_DEPLOY_TARGETS, SUPPORTED_DEPLOY_TARGETS, SecretsConfig, ServiceImageConfig, ServicesConfig, SharedConfig, WorkspaceConfig, WorkspaceConfigSchema, WorkspaceInput, formatValidationErrors, getDeployTargetError, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, safeValidateWorkspaceConfig, validateWorkspaceConfig } from "../types-6pkp2RRj.mjs";
2
- import { PUBLIC_ENV_PREFIXES, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getEndpointForStage, getPublicEnvPrefix, normalizeWorkspace, processConfig, stripPublicPrefix, workspaceConstructGlobs, wrapSingleAppAsWorkspace } from "../index-C6e-ULLx.mjs";
1
+ import { AppConfig, AppConfigInput, AppInput, AppsRecord, BackendFramework, ConstrainedApps, DeployConfig, DeployTarget, DokployWorkspaceConfig, FrontendFramework, InferAppNames, InferredWorkspaceConfig, LoadedConfig, MailServiceConfig, MobileFramework, ModelsConfig, NormalizedAppConfig, NormalizedWorkspace, PHASE_2_DEPLOY_TARGETS, SUPPORTED_DEPLOY_TARGETS, SecretsConfig, ServiceImageConfig, ServicesConfig, SharedConfig, WorkspaceConfig, WorkspaceConfigSchema, WorkspaceInput, formatValidationErrors, getDeployTargetError, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, safeValidateWorkspaceConfig, validateWorkspaceConfig } from "../types-CL7jPFM2.mjs";
2
+ import { PUBLIC_ENV_PREFIXES, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getEndpointForStage, getPublicEnvPrefix, normalizeWorkspace, processConfig, stripPublicPrefix, workspaceConstructGlobs, wrapSingleAppAsWorkspace } from "../index-Ayxg_DQY.mjs";
3
3
  export { AppConfig, AppConfigInput, AppInput, AppsRecord, BackendFramework, ConstrainedApps, DeployConfig, DeployTarget, DokployWorkspaceConfig, FrontendFramework, InferAppNames, InferredWorkspaceConfig, LoadedConfig, MailServiceConfig, MobileFramework, ModelsConfig, NormalizedAppConfig, NormalizedWorkspace, PHASE_2_DEPLOY_TARGETS, PUBLIC_ENV_PREFIXES, SUPPORTED_DEPLOY_TARGETS, SecretsConfig, ServiceImageConfig, ServicesConfig, SharedConfig, WorkspaceConfig, WorkspaceConfigSchema, WorkspaceInput, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, formatValidationErrors, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getEndpointForStage, getPublicEnvPrefix, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, normalizeWorkspace, processConfig, safeValidateWorkspaceConfig, stripPublicPrefix, validateWorkspaceConfig, workspaceConstructGlobs, wrapSingleAppAsWorkspace };
@@ -1,3 +1,3 @@
1
- import { PHASE_2_DEPLOY_TARGETS, PUBLIC_ENV_PREFIXES, SUPPORTED_DEPLOY_TARGETS, WorkspaceConfigSchema, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, formatValidationErrors, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getEndpointForStage, getPublicEnvPrefix, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, normalizeWorkspace, processConfig, safeValidateWorkspaceConfig, stripPublicPrefix, validateWorkspaceConfig, workspaceConstructGlobs, wrapSingleAppAsWorkspace } from "../workspace-zoqRbihZ.mjs";
1
+ import { PHASE_2_DEPLOY_TARGETS, PUBLIC_ENV_PREFIXES, SUPPORTED_DEPLOY_TARGETS, WorkspaceConfigSchema, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, formatValidationErrors, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getEndpointForStage, getPublicEnvPrefix, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, normalizeWorkspace, processConfig, safeValidateWorkspaceConfig, stripPublicPrefix, validateWorkspaceConfig, workspaceConstructGlobs, wrapSingleAppAsWorkspace } from "../workspace-DaEX7FEg.mjs";
2
2
 
3
3
  export { PHASE_2_DEPLOY_TARGETS, PUBLIC_ENV_PREFIXES, SUPPORTED_DEPLOY_TARGETS, WorkspaceConfigSchema, allConstructGlobs, appConstructGlobs, constructPatterns, defineWorkspace, formatValidationErrors, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getEndpointForStage, getPublicEnvPrefix, isDeployTargetSupported, isPhase2DeployTarget, isWorkspaceConfig, normalizeWorkspace, processConfig, safeValidateWorkspaceConfig, stripPublicPrefix, validateWorkspaceConfig, workspaceConstructGlobs, wrapSingleAppAsWorkspace };
@@ -5749,13 +5749,33 @@ function stageProblems(stages) {
5749
5749
  /** The stages block, or an error naming everything wrong with it. */
5750
5750
  function validateStages(stages) {
5751
5751
  const problems = stageProblems(stages);
5752
- if (problems.length) throw new Error(`Invalid stages in gkm.config.ts:\n ${problems.join("\n ")}`);
5752
+ if (problems.length) throw new InvalidStages(problems);
5753
5753
  return stages;
5754
5754
  }
5755
5755
  /** Refuses a stage the project does not deploy to. */
5756
5756
  function assertDeployedStage(stages, stage) {
5757
- if (!stages.deployed.includes(stage)) throw new Error(`"${stage}" is not a deployed stage. gkm.config.ts deploys to: ${stages.deployed.join(", ") || "nothing yet"}.`);
5758
- }
5757
+ if (!stages.deployed.includes(stage)) throw new UndeclaredStage(stage, stages.deployed);
5758
+ }
5759
+ /** A stages block — in gkm.config.ts or from `gkm init`'s flags — that breaks a rule. */
5760
+ var InvalidStages = class extends Error {
5761
+ constructor(problems) {
5762
+ super(`Invalid stages:\n ${problems.join("\n ")}`);
5763
+ this.problems = problems;
5764
+ this.name = "InvalidStages";
5765
+ }
5766
+ };
5767
+ /**
5768
+ * A stage the project does not deploy to. Refused before anything is
5769
+ * provisioned, so a typo does not become a second environment.
5770
+ */
5771
+ var UndeclaredStage = class extends Error {
5772
+ constructor(stage, deployed) {
5773
+ super(`"${stage}" is not a deployed stage. gkm.config.ts deploys to: ${deployed.join(", ") || "nothing yet"}.`);
5774
+ this.stage = stage;
5775
+ this.deployed = deployed;
5776
+ this.name = "UndeclaredStage";
5777
+ }
5778
+ };
5759
5779
 
5760
5780
  //#endregion
5761
5781
  //#region src/workspace/schema.ts
@@ -6674,6 +6694,12 @@ function getEndpointForStage(dokployConfig, stage) {
6674
6694
  }
6675
6695
 
6676
6696
  //#endregion
6697
+ Object.defineProperty(exports, 'InvalidStages', {
6698
+ enumerable: true,
6699
+ get: function () {
6700
+ return InvalidStages;
6701
+ }
6702
+ });
6677
6703
  Object.defineProperty(exports, 'PHASE_2_DEPLOY_TARGETS', {
6678
6704
  enumerable: true,
6679
6705
  get: function () {
@@ -6842,4 +6868,4 @@ Object.defineProperty(exports, 'wrapSingleAppAsWorkspace', {
6842
6868
  return wrapSingleAppAsWorkspace;
6843
6869
  }
6844
6870
  });
6845
- //# sourceMappingURL=workspace-C6VJQVtG.cjs.map
6871
+ //# sourceMappingURL=workspace-C-a3G_U0.cjs.map