veryfront 0.1.1174 → 0.1.1176

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 (124) hide show
  1. package/esm/cli/commands/deploy/command-help.js +2 -2
  2. package/esm/cli/commands/deploy/command.d.ts +2 -3
  3. package/esm/cli/commands/deploy/command.d.ts.map +1 -1
  4. package/esm/cli/commands/deploy/command.js +4 -5
  5. package/esm/cli/commands/init/config-generator.d.ts +1 -0
  6. package/esm/cli/commands/init/config-generator.d.ts.map +1 -1
  7. package/esm/cli/commands/init/config-generator.js +19 -0
  8. package/esm/cli/commands/init/init-command.d.ts.map +1 -1
  9. package/esm/cli/commands/init/init-command.js +4 -2
  10. package/esm/cli/commands/pull/command-help.d.ts.map +1 -1
  11. package/esm/cli/commands/pull/command-help.js +3 -0
  12. package/esm/cli/commands/pull/command.d.ts.map +1 -1
  13. package/esm/cli/commands/pull/command.js +88 -28
  14. package/esm/cli/commands/pull/project-bootstrap.d.ts +26 -0
  15. package/esm/cli/commands/pull/project-bootstrap.d.ts.map +1 -0
  16. package/esm/cli/commands/pull/project-bootstrap.js +155 -0
  17. package/esm/cli/commands/push/command-help.d.ts.map +1 -1
  18. package/esm/cli/commands/push/command-help.js +9 -1
  19. package/esm/cli/commands/push/command.d.ts +7 -1
  20. package/esm/cli/commands/push/command.d.ts.map +1 -1
  21. package/esm/cli/commands/push/command.js +21 -5
  22. package/esm/cli/commands/up/command.d.ts.map +1 -1
  23. package/esm/cli/commands/up/command.js +14 -15
  24. package/esm/cli/shared/server-startup.d.ts +1 -0
  25. package/esm/cli/shared/server-startup.d.ts.map +1 -1
  26. package/esm/cli/shared/server-startup.js +13 -8
  27. package/esm/cli/templates/manifest.js +6 -6
  28. package/esm/deno.js +2 -2
  29. package/esm/extensions/ext-observability-sentry/src/node.d.ts +9 -0
  30. package/esm/extensions/ext-observability-sentry/src/node.d.ts.map +1 -0
  31. package/esm/extensions/ext-observability-sentry/src/node.js +32 -0
  32. package/esm/extensions/ext-observability-sentry/src/policy.d.ts +43 -0
  33. package/esm/extensions/ext-observability-sentry/src/policy.d.ts.map +1 -0
  34. package/esm/extensions/ext-observability-sentry/src/policy.js +108 -0
  35. package/esm/src/agent/factory.d.ts.map +1 -1
  36. package/esm/src/agent/factory.js +44 -15
  37. package/esm/src/agent/hosted/chat-preparation.d.ts.map +1 -1
  38. package/esm/src/agent/hosted/chat-preparation.js +13 -19
  39. package/esm/src/agent/hosted/chat-runtime-contract.d.ts +3 -0
  40. package/esm/src/agent/hosted/chat-runtime-contract.d.ts.map +1 -1
  41. package/esm/src/agent/hosted/cloud-agent-child-tools.d.ts +9 -2
  42. package/esm/src/agent/hosted/cloud-agent-child-tools.d.ts.map +1 -1
  43. package/esm/src/agent/hosted/cloud-agent-child-tools.js +43 -30
  44. package/esm/src/agent/hosted/default-chat-runtime.d.ts +1 -0
  45. package/esm/src/agent/hosted/default-chat-runtime.d.ts.map +1 -1
  46. package/esm/src/agent/hosted/default-chat-runtime.js +1 -0
  47. package/esm/src/agent/hosted/default-invoke-agent-tool.d.ts +1 -0
  48. package/esm/src/agent/hosted/default-invoke-agent-tool.d.ts.map +1 -1
  49. package/esm/src/agent/hosted/default-project-steering-refresh.d.ts.map +1 -1
  50. package/esm/src/agent/hosted/default-project-steering-refresh.js +41 -3
  51. package/esm/src/agent/hosted/project-steering-adapter.d.ts +2 -0
  52. package/esm/src/agent/hosted/project-steering-adapter.d.ts.map +1 -1
  53. package/esm/src/agent/hosted/project-steering-adapter.js +26 -11
  54. package/esm/src/agent/hosted/runtime-essential-tools.d.ts.map +1 -1
  55. package/esm/src/agent/hosted/runtime-essential-tools.js +27 -5
  56. package/esm/src/agent/hosted/veryfront-cloud-agent-service.d.ts +5 -1
  57. package/esm/src/agent/hosted/veryfront-cloud-agent-service.d.ts.map +1 -1
  58. package/esm/src/agent/hosted/veryfront-cloud-agent-service.js +67 -7
  59. package/esm/src/agent/index.d.ts +1 -1
  60. package/esm/src/agent/index.d.ts.map +1 -1
  61. package/esm/src/agent/project/context.d.ts +1 -0
  62. package/esm/src/agent/project/context.d.ts.map +1 -1
  63. package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -1
  64. package/esm/src/agent/runtime/agent-runtime-step.js +17 -2
  65. package/esm/src/agent/runtime/index.js +14 -14
  66. package/esm/src/agent/runtime/load-skill-tool.d.ts +2 -0
  67. package/esm/src/agent/runtime/load-skill-tool.d.ts.map +1 -1
  68. package/esm/src/agent/runtime/load-skill-tool.js +14 -11
  69. package/esm/src/agent/runtime/skill-metadata.d.ts +13 -0
  70. package/esm/src/agent/runtime/skill-metadata.d.ts.map +1 -1
  71. package/esm/src/agent/runtime/skill-metadata.js +19 -0
  72. package/esm/src/agent/service/bootstrap.d.ts +2 -0
  73. package/esm/src/agent/service/bootstrap.d.ts.map +1 -1
  74. package/esm/src/agent/service/bootstrap.js +9 -1
  75. package/esm/src/agent/service/node-runtime-infrastructure.d.ts +3 -1
  76. package/esm/src/agent/service/node-runtime-infrastructure.d.ts.map +1 -1
  77. package/esm/src/agent/service/node-runtime-infrastructure.js +13 -0
  78. package/esm/src/agent/service/node-sentry.d.ts +35 -0
  79. package/esm/src/agent/service/node-sentry.d.ts.map +1 -0
  80. package/esm/src/agent/service/node-sentry.js +242 -0
  81. package/esm/src/agent/service/runtime.d.ts +1 -0
  82. package/esm/src/agent/service/runtime.d.ts.map +1 -1
  83. package/esm/src/agent/service/runtime.js +33 -5
  84. package/esm/src/agent/types.d.ts +22 -8
  85. package/esm/src/agent/types.d.ts.map +1 -1
  86. package/esm/src/channels/control-plane.d.ts.map +1 -1
  87. package/esm/src/channels/control-plane.js +34 -1
  88. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  89. package/esm/src/discovery/discovery-engine.js +1 -0
  90. package/esm/src/discovery/project-discovery-config.d.ts +1 -0
  91. package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
  92. package/esm/src/discovery/project-discovery-config.js +1 -0
  93. package/esm/src/discovery/transpiler.d.ts.map +1 -1
  94. package/esm/src/discovery/transpiler.js +7 -8
  95. package/esm/src/discovery/types.d.ts +4 -0
  96. package/esm/src/discovery/types.d.ts.map +1 -1
  97. package/esm/src/observability/application-errors.d.ts +1 -0
  98. package/esm/src/observability/application-errors.d.ts.map +1 -1
  99. package/esm/src/observability/application-errors.js +12 -2
  100. package/esm/src/server/bootstrap.d.ts +1 -0
  101. package/esm/src/server/bootstrap.d.ts.map +1 -1
  102. package/esm/src/server/bootstrap.js +18 -9
  103. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
  104. package/esm/src/server/handlers/request/api/project-discovery.js +7 -2
  105. package/esm/src/server/service-server.d.ts.map +1 -1
  106. package/esm/src/server/service-server.js +21 -2
  107. package/esm/src/skill/registry.d.ts +9 -0
  108. package/esm/src/skill/registry.d.ts.map +1 -1
  109. package/esm/src/skill/registry.js +21 -0
  110. package/esm/src/skill/selector.d.ts +41 -0
  111. package/esm/src/skill/selector.d.ts.map +1 -0
  112. package/esm/src/skill/selector.js +76 -0
  113. package/esm/src/skill/tools.d.ts +8 -4
  114. package/esm/src/skill/tools.d.ts.map +1 -1
  115. package/esm/src/skill/tools.js +34 -6
  116. package/esm/src/utils/logger/index.d.ts +1 -1
  117. package/esm/src/utils/logger/index.d.ts.map +1 -1
  118. package/esm/src/utils/logger/index.js +1 -1
  119. package/esm/src/utils/logger/logger.d.ts +3 -1
  120. package/esm/src/utils/logger/logger.d.ts.map +1 -1
  121. package/esm/src/utils/logger/logger.js +25 -5
  122. package/esm/src/utils/version-constant.d.ts +1 -1
  123. package/esm/src/utils/version-constant.js +1 -1
  124. package/package.json +5 -5
@@ -6,7 +6,7 @@ export const deployHelp = {
6
6
  options: [
7
7
  {
8
8
  flag: "-b, --branch <name>",
9
- description: "Branch to release from (default: latest verified push, otherwise main)",
9
+ description: "Branch to release from (default: main)",
10
10
  },
11
11
  {
12
12
  flag: "-e, --env, --environment <name>",
@@ -35,7 +35,7 @@ export const deployHelp = {
35
35
  notes: [
36
36
  "Requires VERYFRONT_API_TOKEN or an authenticated Veryfront login",
37
37
  "Creates or links a project when veryfront.json is not present",
38
- "Promotes the latest verified push when --branch is omitted",
38
+ "Promotes main when --branch is omitted",
39
39
  "Pushes main before the first deploy when no verified push exists",
40
40
  "Creates a new release from the resolved branch",
41
41
  "Verifies the target environment points to the created deployment before succeeding",
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Deploy command - Create a release and deploy to an environment
3
3
  *
4
- * Creates a new release from the specified branch, the latest verified push,
5
- * or main when the project has not been pushed yet, then deploys it to the
6
- * target environment (default: production).
4
+ * Creates a new release from the specified branch, or main when no branch is
5
+ * specified, then deploys it to the target environment (default: production).
7
6
  *
8
7
  * @module cli/commands/deploy
9
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAI3E,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,wBAAwB,CAAC;AAiBhC,OAAO,EAIL,KAAK,aAAa,EAMnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,4BAA4B,EAAgB,MAAM,sCAAsC,CAAC;AAIvG;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;IAO5B,uFAAuF;;IAEvF,oDAAoD;;IAEpD,mEAAmE;;GAGtE,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;IATzB,uFAAuF;;IAEvF,oDAAoD;;IAEpD,mEAAmE;;GAKR,CAAC;AAEhE;;GAEG;AACH,KAAK,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,GAAG;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;IA5BxB,uFAAuF;;IAEvF,oDAAoD;;IAEpD,mEAAmE;;GAgCrE,CAAC;AAEH;;GAEG;AACH,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACrB,GAAG,IAAI,CAAC;CACV;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAcD,MAAM,MAAM,4BAA4B,GACpC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;CACpD;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAwCD,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,6BAA8B,SAAQ,wBAAwB;IACtE,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AAsFD,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,UAAU,GACrB,MAAM,GAAG,IAAI,CAaf;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,aAAa,GAAG,SAAS,EACvC,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,SAAS,EAAE,MAAM,GAChB,IAAI,CAMN;AAmCD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAmB7B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,0BAErE;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,CAAC,CASrB;AAUD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,wBAAwB,EAClC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,sBAAsB,CAAC,CAqEjC;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB9D;AA2ID,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,0BAA0B,EAClC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CAiEf;AAmPD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,4BAA4B,CAAC,CAmCvC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoQxF"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/command.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Deploy command - Create a release and deploy to an environment
3
3
  *
4
- * Creates a new release from the specified branch, the latest verified push,
5
- * or main when the project has not been pushed yet, then deploys it to the
6
- * target environment (default: production).
4
+ * Creates a new release from the specified branch, or main when no branch is
5
+ * specified, then deploys it to the target environment (default: production).
7
6
  *
8
7
  * @module cli/commands/deploy
9
8
  */
@@ -738,7 +737,7 @@ export async function deployCommand(options) {
738
737
  };
739
738
  const environmentConfig = await runWithProgress(getEnvironmentConfig);
740
739
  const receipt = await runWithProgress(() => readPushReceipt(projectDir));
741
- const branch = requestedBranch ?? receipt?.branch ?? "main";
740
+ const branch = requestedBranch ?? "main";
742
741
  const setup = await runWithProgress(() => ensureProjectLinkedForDeploy(projectDir, environmentConfig, receipt, dryRun, quiet));
743
742
  let { config, client, project } = setup;
744
743
  const bootstrapPush = needsBootstrapPush(receipt, skipSourcePush);
@@ -920,7 +919,7 @@ async function deployCommandJson(options) {
920
919
  streamJsonLine({ type: "step", name: "resolve-config", status: "started" });
921
920
  const environmentConfig = getEnvironmentConfig();
922
921
  const receipt = await readPushReceipt(projectDir);
923
- const branch = requestedBranch ?? receipt?.branch ?? "main";
922
+ const branch = requestedBranch ?? "main";
924
923
  const setup = await ensureProjectLinkedForDeploy(projectDir, environmentConfig, receipt, dryRun, true);
925
924
  let { config, client, project } = setup;
926
925
  const bootstrapPush = needsBootstrapPush(receipt, skipSourcePush);
@@ -15,4 +15,5 @@ export interface CreatePackageJsonOptions {
15
15
  }>;
16
16
  }
17
17
  export declare function createPackageJson(projectDir: string, projectName?: string, options?: CreatePackageJsonOptions): Promise<void>;
18
+ export declare function createTypeScriptConfig(projectDir: string): Promise<void>;
18
19
  //# sourceMappingURL=config-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/config-generator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAmEf"}
1
+ {"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/config-generator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAoEf;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB9E"}
@@ -41,6 +41,7 @@ export async function createPackageJson(projectDir, projectName, options = {}) {
41
41
  build: "veryfront build",
42
42
  start: "veryfront serve",
43
43
  eval: "veryfront eval",
44
+ deploy: "veryfront deploy",
44
45
  },
45
46
  pnpm: {
46
47
  onlyBuiltDependencies: ["esbuild"],
@@ -57,3 +58,21 @@ export async function createPackageJson(projectDir, projectName, options = {}) {
57
58
  await fs.writeTextFile(join(projectDir, "package.json"), JSON.stringify(packageJson, null, 2));
58
59
  logger.debug('Created package.json with "type": "module"');
59
60
  }
61
+ export async function createTypeScriptConfig(projectDir) {
62
+ const fs = createFileSystem();
63
+ const tsConfig = {
64
+ compilerOptions: {
65
+ target: "ES2022",
66
+ module: "ESNext",
67
+ moduleResolution: "bundler",
68
+ strict: true,
69
+ jsx: "react-jsx",
70
+ skipLibCheck: true,
71
+ esModuleInterop: true,
72
+ paths: { "@/*": ["./*"] },
73
+ },
74
+ include: ["**/*.ts", "**/*.tsx"],
75
+ exclude: ["node_modules"],
76
+ };
77
+ await fs.writeTextFile(join(projectDir, "tsconfig.json"), `${JSON.stringify(tsConfig, null, 2)}\n`);
78
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/init-command.ts"],"names":[],"mappings":"AAAA;;;iCAGiC;AAUjC,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,YAAY,CAAC;AAwKzE,UAAU,uBAAuB;IAC/B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAyFD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,YAAY,GAAE,uBAA4B,GACzC,OAAO,CAAC,IAAI,CAAC,CA4Yf"}
1
+ {"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/init-command.ts"],"names":[],"mappings":"AAAA;;;iCAGiC;AAUjC,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,YAAY,CAAC;AAwKzE,UAAU,uBAAuB;IAC/B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAyFD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,YAAY,GAAE,uBAA4B,GACzC,OAAO,CAAC,IAAI,CAAC,CA8Yf"}
@@ -439,7 +439,9 @@ export async function initCommand(options, dependencies = {}) {
439
439
  }
440
440
  // Deploy to cloud if --deploy flag is set
441
441
  let deployedUrl;
442
- const manualDeployCommand = `${getDlxCommand(pmPreference)} veryfront deploy`;
442
+ const manualDeployCommand = quiet
443
+ ? `${getDlxCommand(pmPreference)} veryfront deploy`
444
+ : getRunCommand(pmPreference, "deploy");
443
445
  if (options.deploy) {
444
446
  const manualDeployHint = `Run ${brand(manualDeployCommand)} to deploy later.`;
445
447
  if (dependencies.deployProject) {
@@ -518,7 +520,7 @@ export async function initCommand(options, dependencies = {}) {
518
520
  const displayName = projectName ?? "Project";
519
521
  const structureRoot = projectName ?? ".";
520
522
  const structureLines = renderProjectStructure(structureRoot, createdPaths);
521
- const deployCommandHint = `${getDlxCommand(pm)} veryfront deploy`;
523
+ const deployCommandHint = getRunCommand(pm, "deploy");
522
524
  if (!quiet) {
523
525
  console.log();
524
526
  console.log(` ✓ ${displayName} ready`);
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pull/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WA4EtB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pull/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WA+EtB,CAAC"}
@@ -71,6 +71,9 @@ export const pullHelp = {
71
71
  "--prune --dry-run can preview anywhere and never writes or deletes local files",
72
72
  "Only supported text files are managed; ignored, unsupported, and binary files remain unchanged",
73
73
  "Pull preserves remote bytes exactly, including line endings and a missing final newline",
74
+ "A successful pull stores the canonical project link and creates missing package.json and tsconfig.json files",
75
+ "Pull confirms before writing managed files, pruning files, or creating bootstrap files; use --yes to skip",
76
+ "Pull never overwrites downloaded or existing bootstrap files; --dry-run reports planned bootstrap writes",
74
77
  "Invalid, duplicate, reserved, or symlink-traversing remote paths fail before local writes",
75
78
  "A fetch failure causes no writes or pruning; a local write or delete failure exits with an error",
76
79
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pull/command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAM3E,OAAO,EACL,eAAe,EAIhB,MAAM,wBAAwB,CAAC;AAiBhC;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAa7B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;GAAgC,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;GAWxB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAKlE;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAsCD,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAkDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAcjF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAoBjG;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAC1C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAkbD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6KpE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pull/command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAM3E,OAAO,EACL,eAAe,EAIhB,MAAM,wBAAwB,CAAC;AAwBhC;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAa7B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;GAAgC,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;GAWxB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAKlE;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAsCD,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAkDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAcjF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAoBjG;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAC1C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAKjB;AA2eD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2LpE"}
@@ -21,6 +21,8 @@ import { ERROR_REGISTRY, getErrorBySlug, INVALID_ARGUMENT, RESOURCE_NOT_FOUND, V
21
21
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
22
22
  import { CommonArgs, createArgParser } from "../../shared/args.js";
23
23
  import { createIgnoreChecker, loadIgnorePatterns } from "../../sync/ignore.js";
24
+ import { getProjectTarget } from "../../shared/deployment-provenance.js";
25
+ import { ensurePulledProjectBootstrap, isPulledProjectBootstrapPath, planPulledProjectBootstrap, preflightPulledProjectBootstrap, } from "./project-bootstrap.js";
24
26
  /**
25
27
  * Schema factory for pull command arguments
26
28
  */
@@ -378,6 +380,9 @@ function errorSlug(error) {
378
380
  const slug = error?.slug;
379
381
  return typeof slug === "string" ? slug : undefined;
380
382
  }
383
+ function isProjectLinkResolutionError(error) {
384
+ return describeError(error).includes(".veryfront/project.json");
385
+ }
381
386
  function pullProjectListError(projectSlug, sourceLabel, error) {
382
387
  const message = [
383
388
  `Failed to list files for project "${projectSlug}" from ${sourceLabel}: ${describeError(error)}.`,
@@ -393,7 +398,7 @@ function pullProjectListError(projectSlug, sourceLabel, error) {
393
398
  }
394
399
  return wrapped;
395
400
  }
396
- async function confirmPullWrite(projectDir, writeCount, deleteCount) {
401
+ async function confirmPullWrite(projectDir, writeCount, deleteCount, bootstrapWriteCount) {
397
402
  if (isInteractive() && !isTTY()) {
398
403
  throw INVALID_ARGUMENT.create({
399
404
  detail: `Pull requires confirmation before writing files, but no interactive prompt is available. ` +
@@ -402,9 +407,12 @@ async function confirmPullWrite(projectDir, writeCount, deleteCount) {
402
407
  }
403
408
  const actions = [];
404
409
  if (writeCount > 0)
405
- actions.push(`overwrite ${writeCount} local files`);
410
+ actions.push(`write ${writeCount} managed local files`);
406
411
  if (deleteCount > 0)
407
412
  actions.push(`delete ${deleteCount} managed local files`);
413
+ if (bootstrapWriteCount > 0) {
414
+ actions.push(`create or update ${bootstrapWriteCount} local project files`);
415
+ }
408
416
  const action = actions.join(" and ");
409
417
  return await confirmPrompt(`This will ${action} in ${projectDir}. Continue?`, false);
410
418
  }
@@ -424,9 +432,7 @@ async function pullSingleProject(projectSlug, projectDir, source, force, dryRun,
424
432
  finally {
425
433
  spinner.stop();
426
434
  }
427
- const pruneIgnoreChecker = prune
428
- ? createIgnoreChecker(await loadIgnorePatterns(projectDir))
429
- : null;
435
+ const ignoreChecker = createIgnoreChecker(await loadIgnorePatterns(projectDir));
430
436
  const writeOps = [];
431
437
  const remotePaths = new Set();
432
438
  for (const file of files) {
@@ -444,9 +450,8 @@ async function pullSingleProject(projectSlug, projectDir, source, force, dryRun,
444
450
  cause: error,
445
451
  });
446
452
  }
447
- if (pruneIgnoreChecker &&
448
- (pruneIgnoreChecker.isIgnored(op.relativePath) ||
449
- !pruneIgnoreChecker.isSupportedExtension(op.relativePath))) {
453
+ if (ignoreChecker.isIgnored(op.relativePath) ||
454
+ !ignoreChecker.isSupportedExtension(op.relativePath)) {
450
455
  continue;
451
456
  }
452
457
  if (typeof file.content !== "string") {
@@ -457,27 +462,56 @@ async function pullSingleProject(projectSlug, projectDir, source, force, dryRun,
457
462
  writeOps.push({ ...op, content: file.content });
458
463
  }
459
464
  let deleteOps = [];
460
- if (pruneIgnoreChecker) {
465
+ if (prune) {
461
466
  const managedRemotePaths = new Set(writeOps.map((op) => op.relativePath));
462
- const localFiles = await listManagedLocalFiles(projectDir, pruneIgnoreChecker);
463
- deleteOps = localFiles.filter((file) => !managedRemotePaths.has(file.relativePath));
464
- }
465
- if (writeOps.length === 0 && deleteOps.length === 0) {
467
+ const localFiles = await listManagedLocalFiles(projectDir, ignoreChecker);
468
+ deleteOps = localFiles.filter((file) => !managedRemotePaths.has(file.relativePath) &&
469
+ !isPulledProjectBootstrapPath(file.relativePath));
470
+ }
471
+ const project = await getProjectTarget(client, projectSlug);
472
+ const pulledPaths = new Set(writeOps.map((op) => op.relativePath));
473
+ const deletedPaths = new Set(deleteOps.map((op) => op.relativePath));
474
+ await preflightPulledProjectBootstrap({ projectDir });
475
+ const bootstrapPlan = await planPulledProjectBootstrap({
476
+ projectDir,
477
+ config,
478
+ project,
479
+ pulledPaths,
480
+ deletedPaths,
481
+ dryRun,
482
+ quiet,
483
+ });
484
+ const hasFileOperations = writeOps.length > 0 || deleteOps.length > 0;
485
+ if (!hasFileOperations && bootstrapPlan.writeCount === 0) {
466
486
  if (!quiet)
467
487
  logInfo(`No files to pull from ${projectSlug}.`);
468
- return { written: 0, deleted: 0, cancelled: false };
469
488
  }
470
- if (!quiet) {
489
+ if (!quiet && hasFileOperations) {
471
490
  const deleteSummary = deleteOps.length > 0 ? ` and ${deleteOps.length} to delete` : "";
472
491
  cliLogger.info(`\nFound ${writeOps.length} files to ${dryRun ? "pull" : "write"}${deleteSummary} from ${projectSlug}.`);
473
492
  }
474
- if (!force && !dryRun) {
475
- const confirmed = await confirmPullWrite(projectDir, writeOps.length, deleteOps.length);
493
+ if (!force &&
494
+ !dryRun &&
495
+ (hasFileOperations || bootstrapPlan.writeCount > 0)) {
496
+ const confirmed = await confirmPullWrite(projectDir, writeOps.length, deleteOps.length, bootstrapPlan.writeCount);
476
497
  if (!confirmed) {
477
498
  cliLogger.info("Pull cancelled.");
478
499
  return { written: 0, deleted: 0, cancelled: true };
479
500
  }
480
501
  }
502
+ if (!hasFileOperations) {
503
+ await ensurePulledProjectBootstrap({
504
+ projectDir,
505
+ config,
506
+ project,
507
+ pulledPaths,
508
+ deletedPaths,
509
+ dryRun,
510
+ quiet,
511
+ plan: bootstrapPlan,
512
+ });
513
+ return { written: 0, deleted: 0, cancelled: false };
514
+ }
481
515
  spinner = quiet ? createNoopSpinner() : createSpinner(`Writing files to ${projectDir}...`);
482
516
  const writeResult = await writeFiles(writeOps, dryRun);
483
517
  if (writeResult.failed > 0) {
@@ -489,6 +523,16 @@ async function pullSingleProject(projectSlug, projectDir, source, force, dryRun,
489
523
  if (deleteResult.failed > 0) {
490
524
  throw new Error(`Failed to prune ${deleteResult.failed} local file${deleteResult.failed === 1 ? "" : "s"}. Some files may have changed. Review git status and restore a clean worktree before retrying.`);
491
525
  }
526
+ await ensurePulledProjectBootstrap({
527
+ projectDir,
528
+ config,
529
+ project,
530
+ pulledPaths,
531
+ deletedPaths,
532
+ dryRun,
533
+ quiet,
534
+ plan: bootstrapPlan,
535
+ });
492
536
  if (!quiet) {
493
537
  if (dryRun) {
494
538
  logInfo(`Dry run complete for ${projectSlug}. Would write ${writeResult.written} and delete ${deleteResult.deleted} files.`);
@@ -543,18 +587,34 @@ export function pullCommand(options = {}) {
543
587
  }
544
588
  catch (error) {
545
589
  spinner.stop();
546
- if (!projects?.length)
547
- throw error;
548
- const env = getEnvironmentConfig();
549
- const token = getApiTokenEnv(env) ?? configFile?.apiToken;
550
- if (!token) {
551
- throw new Error("VERYFRONT_API_TOKEN environment variable or apiToken in veryfront.json is required when using --projects");
590
+ if (slugOverride && isProjectLinkResolutionError(error)) {
591
+ const env = getEnvironmentConfig();
592
+ const token = getApiTokenEnv(env) ?? configFile?.apiToken;
593
+ if (token) {
594
+ config = {
595
+ apiUrl: resolveCliApiUrl(env, configFile?.apiUrl),
596
+ apiToken: token,
597
+ projectSlug: slugOverride,
598
+ };
599
+ }
600
+ else {
601
+ throw error;
602
+ }
603
+ }
604
+ else {
605
+ if (!projects?.length)
606
+ throw error;
607
+ const env = getEnvironmentConfig();
608
+ const token = getApiTokenEnv(env) ?? configFile?.apiToken;
609
+ if (!token) {
610
+ throw new Error("VERYFRONT_API_TOKEN environment variable or apiToken in veryfront.json is required when using --projects");
611
+ }
612
+ config = {
613
+ apiUrl: resolveCliApiUrl(env, configFile?.apiUrl),
614
+ apiToken: token,
615
+ projectSlug: "",
616
+ };
552
617
  }
553
- config = {
554
- apiUrl: resolveCliApiUrl(env, configFile?.apiUrl),
555
- apiToken: token,
556
- projectSlug: "",
557
- };
558
618
  }
559
619
  if (prune && !dryRun) {
560
620
  spinner.update("Checking Git worktree...");
@@ -0,0 +1,26 @@
1
+ import type { ResolvedConfig } from "../../shared/config.js";
2
+ import { type ProjectTarget } from "../../shared/deployment-provenance.js";
3
+ export interface PulledProjectBootstrapPlan {
4
+ projectLinkAction: "create" | "update" | null;
5
+ createPackageJson: boolean;
6
+ createTsconfig: boolean;
7
+ writeCount: number;
8
+ }
9
+ export interface PulledProjectBootstrapOptions {
10
+ projectDir: string;
11
+ config: ResolvedConfig;
12
+ project: ProjectTarget;
13
+ pulledPaths: ReadonlySet<string>;
14
+ deletedPaths: ReadonlySet<string>;
15
+ dryRun: boolean;
16
+ quiet: boolean;
17
+ plan?: PulledProjectBootstrapPlan;
18
+ }
19
+ export interface PulledProjectBootstrapPreflightOptions {
20
+ projectDir: string;
21
+ }
22
+ export declare function isPulledProjectBootstrapPath(relativePath: string): boolean;
23
+ export declare function preflightPulledProjectBootstrap(options: PulledProjectBootstrapPreflightOptions): Promise<void>;
24
+ export declare function planPulledProjectBootstrap(options: PulledProjectBootstrapOptions): Promise<PulledProjectBootstrapPlan>;
25
+ export declare function ensurePulledProjectBootstrap(options: PulledProjectBootstrapOptions): Promise<void>;
26
+ //# sourceMappingURL=project-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pull/project-bootstrap.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAYlG,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC9C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,WAAW,sCAAsC;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AA8CD,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAkCrC;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
@@ -0,0 +1,155 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import { createFileSystem } from "../../../src/platform/index.js";
3
+ import { join } from "../../../src/platform/compat/path/index.js";
4
+ import { isNotFoundError } from "../../../src/fs/index.js";
5
+ import { cliLogger } from "../../utils/index.js";
6
+ import { clearProjectLink, readProjectLink, writeProjectLink } from "../../shared/project-link.js";
7
+ import { normalizeControlPlane } from "../../shared/deployment-provenance.js";
8
+ import { createPackageJson, createTypeScriptConfig } from "../init/config-generator.js";
9
+ const PACKAGE_JSON_PATH = "package.json";
10
+ const TSCONFIG_PATH = "tsconfig.json";
11
+ const PROJECT_LINK_PATH = ".veryfront/project.json";
12
+ const LOCAL_BOOTSTRAP_PATHS = new Set([
13
+ PACKAGE_JSON_PATH,
14
+ TSCONFIG_PATH,
15
+ PROJECT_LINK_PATH,
16
+ ]);
17
+ async function pathExistsInFinalState(projectDir, relativePath, pulledPaths, deletedPaths) {
18
+ if (pulledPaths.has(relativePath))
19
+ return true;
20
+ if (deletedPaths.has(relativePath))
21
+ return false;
22
+ const fs = createFileSystem();
23
+ return await fs.exists(join(projectDir, relativePath));
24
+ }
25
+ async function removeIfPresent(path) {
26
+ try {
27
+ await dntShim.Deno.remove(path);
28
+ }
29
+ catch (error) {
30
+ if (!isNotFoundError(error))
31
+ throw error;
32
+ }
33
+ }
34
+ function describeError(error) {
35
+ return error instanceof Error ? error.message : String(error);
36
+ }
37
+ async function assertRegularBootstrapFile(projectDir, relativePath) {
38
+ try {
39
+ const info = await dntShim.Deno.lstat(join(projectDir, relativePath));
40
+ if (info.isSymlink) {
41
+ throw new Error(`Veryfront pull does not support a symbolic link at "${relativePath}". Replace the link with a regular file and run veryfront pull again.`);
42
+ }
43
+ if (!info.isFile) {
44
+ throw new Error(`Veryfront pull requires "${relativePath}" to be a regular file.`);
45
+ }
46
+ }
47
+ catch (error) {
48
+ if (isNotFoundError(error))
49
+ return;
50
+ throw error;
51
+ }
52
+ }
53
+ export function isPulledProjectBootstrapPath(relativePath) {
54
+ return LOCAL_BOOTSTRAP_PATHS.has(relativePath);
55
+ }
56
+ export async function preflightPulledProjectBootstrap(options) {
57
+ await readProjectLink(options.projectDir);
58
+ await assertRegularBootstrapFile(options.projectDir, PACKAGE_JSON_PATH);
59
+ await assertRegularBootstrapFile(options.projectDir, TSCONFIG_PATH);
60
+ }
61
+ export async function planPulledProjectBootstrap(options) {
62
+ const projectLink = await readProjectLink(options.projectDir);
63
+ const plannedProjectLink = {
64
+ controlPlane: options.config.apiUrl,
65
+ projectId: options.project.id,
66
+ projectSlug: options.project.slug,
67
+ };
68
+ const projectLinkMatches = projectLink &&
69
+ normalizeControlPlane(projectLink.controlPlane) ===
70
+ normalizeControlPlane(plannedProjectLink.controlPlane) &&
71
+ projectLink.projectId === plannedProjectLink.projectId &&
72
+ projectLink.projectSlug === plannedProjectLink.projectSlug;
73
+ const projectLinkAction = projectLinkMatches ? null : projectLink ? "update" : "create";
74
+ const createPackageJson = !(await pathExistsInFinalState(options.projectDir, PACKAGE_JSON_PATH, options.pulledPaths, options.deletedPaths));
75
+ const createTsconfig = !(await pathExistsInFinalState(options.projectDir, TSCONFIG_PATH, options.pulledPaths, options.deletedPaths));
76
+ return {
77
+ projectLinkAction,
78
+ createPackageJson,
79
+ createTsconfig,
80
+ writeCount: Number(projectLinkAction !== null) +
81
+ Number(createPackageJson) +
82
+ Number(createTsconfig),
83
+ };
84
+ }
85
+ export async function ensurePulledProjectBootstrap(options) {
86
+ const plan = options.plan ?? await planPulledProjectBootstrap(options);
87
+ if (options.dryRun) {
88
+ if (!options.quiet) {
89
+ if (plan.projectLinkAction) {
90
+ cliLogger.info(` Would ${plan.projectLinkAction}: ${PROJECT_LINK_PATH}`);
91
+ }
92
+ if (plan.createPackageJson)
93
+ cliLogger.info(` Would create: ${PACKAGE_JSON_PATH}`);
94
+ if (plan.createTsconfig)
95
+ cliLogger.info(` Would create: ${TSCONFIG_PATH}`);
96
+ }
97
+ return;
98
+ }
99
+ const previousLink = plan.projectLinkAction ? await readProjectLink(options.projectDir) : null;
100
+ const previousLinkText = previousLink
101
+ ? await dntShim.Deno.readTextFile(join(options.projectDir, PROJECT_LINK_PATH))
102
+ : null;
103
+ const veryfrontDirectory = join(options.projectDir, ".veryfront");
104
+ const hadVeryfrontDirectory = await createFileSystem().exists(veryfrontDirectory);
105
+ const createdFiles = [];
106
+ let projectLinkMutationAttempted = false;
107
+ try {
108
+ if (plan.projectLinkAction) {
109
+ projectLinkMutationAttempted = true;
110
+ await writeProjectLink(options.projectDir, {
111
+ controlPlane: options.config.apiUrl,
112
+ projectId: options.project.id,
113
+ projectSlug: options.project.slug,
114
+ });
115
+ }
116
+ if (plan.createPackageJson) {
117
+ createdFiles.push(join(options.projectDir, PACKAGE_JSON_PATH));
118
+ await createPackageJson(options.projectDir, options.project.slug);
119
+ }
120
+ if (plan.createTsconfig) {
121
+ createdFiles.push(join(options.projectDir, TSCONFIG_PATH));
122
+ await createTypeScriptConfig(options.projectDir);
123
+ }
124
+ }
125
+ catch (error) {
126
+ const rollbackErrors = [];
127
+ for (const file of createdFiles.reverse()) {
128
+ try {
129
+ await removeIfPresent(file);
130
+ }
131
+ catch (rollbackError) {
132
+ rollbackErrors.push(rollbackError);
133
+ }
134
+ }
135
+ if (projectLinkMutationAttempted) {
136
+ try {
137
+ if (previousLinkText !== null) {
138
+ await dntShim.Deno.writeTextFile(join(options.projectDir, PROJECT_LINK_PATH), previousLinkText);
139
+ }
140
+ else {
141
+ await clearProjectLink(options.projectDir);
142
+ if (!hadVeryfrontDirectory)
143
+ await removeIfPresent(veryfrontDirectory);
144
+ }
145
+ }
146
+ catch (rollbackError) {
147
+ rollbackErrors.push(rollbackError);
148
+ }
149
+ }
150
+ if (rollbackErrors.length > 0) {
151
+ throw new Error(`Bootstrap failed: ${describeError(error)}. Rollback also failed: ${rollbackErrors.map(describeError).join("; ")}`, { cause: error });
152
+ }
153
+ throw error;
154
+ }
155
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/push/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAwCtB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/push/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAgDtB,CAAC"}
@@ -18,7 +18,11 @@ export const pushHelp = {
18
18
  },
19
19
  {
20
20
  flag: "--dry-run",
21
- description: "Show what would be uploaded without uploading",
21
+ description: "Show planned uploads and deletions without changing remote files",
22
+ },
23
+ {
24
+ flag: "--prune",
25
+ description: "Delete managed remote files that are missing locally",
22
26
  },
23
27
  {
24
28
  flag: "-q, --quiet",
@@ -29,13 +33,17 @@ export const pushHelp = {
29
33
  "veryfront push",
30
34
  "veryfront push --branch feature-header",
31
35
  "veryfront push --dry-run",
36
+ "veryfront push --prune --dry-run",
32
37
  ],
33
38
  notes: [
34
39
  "Pushes main by default and prints its stable cloud preview URL",
35
40
  "Use --branch to create or update an isolated branch preview",
36
41
  "Preview branch names use lowercase letters, numbers, and hyphens",
42
+ "By default, push uploads local files and preserves remote-only files",
43
+ "Use --prune to remove managed remote files that are missing locally",
37
44
  "Run veryfront deploy when the preview is ready for an environment",
38
45
  ".vfignore excludes matching local files and preserves matching remote files",
46
+ "--dry-run previews deletions only when --prune is present",
39
47
  "--dry-run never creates a project or branch, changes remote files, or writes a Push receipt",
40
48
  ],
41
49
  };