@namewta/speculo 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/src/ops-resources.js +1 -1
  2. package/dist/src/ops-resources.js.map +1 -1
  3. package/package.json +1 -1
  4. package/template/workflows/ops/D-project-deploy/D-project-deploy.md +1 -1
  5. package/template/workflows/ops/H-host-manage/H-host-manage.md +5 -1
  6. package/template/workflows/ops/I-initialize/I-initialize.md +2 -2
  7. package/template/workflows/ops/README.md +8 -5
  8. package/template/workflows/ops/common/CAPABILITIES.md +2 -2
  9. package/template/workflows/ops/common/USAGE.md +25 -25
  10. package/template/workflows/ops/common/examples/README.md +1 -1
  11. package/template/workflows/ops/common/examples/register.example.json +1 -1
  12. package/template/workflows/ops/common/rules/persistence-and-secrets.md +1 -1
  13. package/template/workflows/ops/common/schemas/host.schema.json +65 -2
  14. package/template/workflows/ops/common/schemas/plan.schema.json +315 -3
  15. package/template/workflows/ops/common/schemas/spec.schema.json +137 -1
  16. package/template/workflows/ops/common/schemas/status.schema.json +143 -1
  17. package/template/workflows/ops/common/service-profiles/elasticsearch.md +13 -0
  18. package/template/workflows/ops/common/service-profiles/redis.md +4 -0
  19. package/template/workflows/ops/common/templates/CONTROLLER-RECORD.md +16 -2
  20. package/template/workflows/ops/common/templates/HOST-README.md +12 -2
  21. package/template/workflows/ops/common/tests/test_ops.mjs +982 -0
  22. package/template/workflows/ops/common/tools/bootstrap.ps1 +2 -2
  23. package/template/workflows/ops/common/tools/bootstrap.sh +2 -2
  24. package/template/workflows/ops/common/tools/demo-local.mjs +101 -0
  25. package/template/workflows/ops/common/tools/ops.mjs +4 -0
  26. package/template/workflows/ops/common/tools/opslib/agent.mjs +904 -0
  27. package/template/workflows/ops/common/tools/opslib/cli.mjs +311 -0
  28. package/template/workflows/ops/common/tools/opslib/control_files.mjs +57 -0
  29. package/template/workflows/ops/common/tools/opslib/core.mjs +393 -0
  30. package/template/workflows/ops/common/tools/opslib/docs.mjs +436 -0
  31. package/template/workflows/ops/common/tools/opslib/execution.mjs +396 -0
  32. package/template/workflows/ops/common/tools/opslib/host_recipes.mjs +109 -0
  33. package/template/workflows/ops/common/tools/opslib/model.mjs +272 -0
  34. package/template/workflows/ops/common/tools/opslib/{native_windows.py → native_windows.mjs} +16 -12
  35. package/template/workflows/ops/common/tools/opslib/planner.mjs +781 -0
  36. package/template/workflows/ops/common/tools/opslib/services.mjs +76 -0
  37. package/template/workflows/ops/common/tools/opslib/sources.mjs +56 -0
  38. package/template/workflows/ops/common/tools/opslib/transport.mjs +127 -0
  39. package/template/workflows/ops/common/tools/validate-ops.mjs +43 -30
  40. package/template/workflows/ops/common/tests/test_ops.py +0 -392
  41. package/template/workflows/ops/common/tools/demo-local.py +0 -64
  42. package/template/workflows/ops/common/tools/ops.py +0 -7
  43. package/template/workflows/ops/common/tools/opslib/__init__.py +0 -2
  44. package/template/workflows/ops/common/tools/opslib/__pycache__/__init__.cpython-312.pyc +0 -0
  45. package/template/workflows/ops/common/tools/opslib/__pycache__/core.cpython-312.pyc +0 -0
  46. package/template/workflows/ops/common/tools/opslib/__pycache__/model.cpython-312.pyc +0 -0
  47. package/template/workflows/ops/common/tools/opslib/agent.py +0 -510
  48. package/template/workflows/ops/common/tools/opslib/cli.py +0 -172
  49. package/template/workflows/ops/common/tools/opslib/core.py +0 -199
  50. package/template/workflows/ops/common/tools/opslib/docs.py +0 -199
  51. package/template/workflows/ops/common/tools/opslib/execution.py +0 -248
  52. package/template/workflows/ops/common/tools/opslib/host_recipes.py +0 -67
  53. package/template/workflows/ops/common/tools/opslib/model.py +0 -199
  54. package/template/workflows/ops/common/tools/opslib/planner.py +0 -497
  55. package/template/workflows/ops/common/tools/opslib/services.py +0 -47
  56. package/template/workflows/ops/common/tools/opslib/sources.py +0 -27
  57. package/template/workflows/ops/common/tools/opslib/transport.py +0 -55
@@ -86,7 +86,7 @@ export function validateOpsResources(value, schema) {
86
86
  throw new Error("Ops system/ADS host root rejected");
87
87
  if (h.transport === "local" && Object.keys(h.connection).length !== 0)
88
88
  throw new Error("Ops local connection must be empty");
89
- if (h.transport === "ssh" && ["hostname", "username", "known_hosts", "python"].some(k => !h.connection[k]))
89
+ if (h.transport === "ssh" && ["hostname", "username", "known_hosts", "node"].some(k => !h.connection[k]))
90
90
  throw new Error("Ops SSH connection incomplete");
91
91
  const key = h.identity + ":" + (h.platform === "windows" ? h.root.toLowerCase() : h.root);
92
92
  if (physical.has(key))
@@ -1 +1 @@
1
- {"version":3,"file":"ops-resources.js","sourceRoot":"","sources":["../../src/ops-resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops-resources.js","sourceRoot":"","sources":["../../src/ops-resources.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,UAAU,yBAAyB,CAAC,KAAc,EAAE,MAAkB;IAC1E,SAAS,IAAI,CAAC,CAAM,EAAE,CAAM,EAAE,KAAa;QACzC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,IAAI,GAAQ,MAAM,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAAC,OAAO;QAC/B,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBAAC,MAAM,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAAC,CAAC;YACpF,IAAI,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAwC;YACjD,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO;YAC3F,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS;YACnG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SAChF,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;QACvI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;QACjF,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;YAC9F,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QACjH,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QAC/H,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC;YAC3F,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,CAAC,aAAa;oBAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU;oBAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;qBAC/E,IAAI,CAAC,CAAC,oBAAoB,KAAK,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC;qBAChF,IAAI,OAAO,CAAC,CAAC,oBAAoB,KAAK,QAAQ;oBAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;YACtH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAiB,EAAE,MAAkB;IACxE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,KAA4B,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,SAAS,GAA8D,EAAE,CAAC;IAChF,MAAM,QAAQ,GAA8D,EAAE,CAAC;IAC/E,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAoB,EAAE,CAAC;QACjE,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7I,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5J,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnJ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7N,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC7H,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC3J,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9F,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAAE,SAAS;YAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAClG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3E,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC/G,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAoB,EAAE,CAAC;QAC1E,IAAI,EAAE,KAAK,OAAO,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,OAAO,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/G,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAoB,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACxG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3I,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACpG,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/F,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7F,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAAE,SAAS;YAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAChE,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9G,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,CAAC,CAAC,QAAQ,KAAG,SAAS,EAAC,CAAC,CAAC;QAClF,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC3K,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAoB,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACzD,IAAI,EAAE,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC/L,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,sBAAsB,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAChF,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACpG,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAoB,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,KAAK,CAAC,CAAC,sBAAsB,IAAI,CAAC,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC7J,IAAI,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACnL,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACzH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACzF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,sBAAsB,KAAK,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC/M,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,SAAS,KAAK,CAAC,EAAU,EAAE,KAAkB;QAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namewta/speculo",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Workflow-packaged AI collaboration assets with state-safe refresh tooling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,4 +31,4 @@ uninstall 只停止自身、退役绑定和实例,保留所有数据、账号
31
31
 
32
32
  完成条件:所有业务步骤与健康检查成功;服务端 README 具有最新版本、时间、配置、持久化、步骤和依赖;控制端对应目录保存完整明文与配置镜像;两边文档 SHA256 回执通过。docs_pending 不得报全部完成。
33
33
 
34
- 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.py,不能绕过计划审批直接拼接命令调用主机。
34
+ 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.mjs,不能绕过计划审批直接拼接命令调用主机。
@@ -27,4 +27,8 @@ Docker 缺失使用经审核且版本固定的 Linux Engine 安装配方,完
27
27
 
28
28
  主机维护影响现存 APP/公共服务消费者时必须明确 acknowledged_consumers。完整计划列出下载、系统控制文件、服务重启、默认恢复和验证;执行通过后刷新主机双边记录。
29
29
 
30
- 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.py,不能绕过计划审批直接拼接命令调用主机。
30
+ `write-control` 精确绝对路径例外:内置 `/etc/docker/daemon.json` 与 `/etc/systemd/system/ops-*.service`;经审批还可声明 nginx conf.d、wireguard 配置、以及非 `ops-` 前缀的 systemd 单元。声明路径必须带理由、回滚说明和事后验证,不是任意 `/etc` 写权限。`sshd`/`docker`/`containerd` 等核心单元拒绝。业务数据路径没有该例外。
31
+
32
+ 主机级入口(WireGuard、Nginx、探测页)写入 `resource_updates.hosts[].host_services`,生成器输出 `knowledge/host-services.json` 并进入服务一览表。跨主机公网入口写入 spec `public_ingress`,生成 `knowledge/public-ingress.json` 与「公网访问内网」章节。这些不是假的 APP 部署。`write-file` 不得覆盖生成器负责的 `README.md` / `DEPLOYMENTS.md` / `knowledge/host-services.json` / `knowledge/public-ingress.json` / `knowledge/INDEX.md`。
33
+
34
+ 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.mjs,不能绕过计划审批直接拼接命令调用主机。
@@ -17,7 +17,7 @@ keywords: [ops, initialize, 主机, 持久化, 审批]
17
17
 
18
18
  ## 流程与完成标准
19
19
 
20
- 先只读识别 shell、SSH、Git、Python、uv、Node、JDK 和权限;已有且满足要求的工具复用。无 Python 时 bootstrap 的 probe 不依赖 Python;用户提供带 SHA256 的可信安装器并确认后才执行引导。安装器完整命令/作用范围必须先展示。
20
+ 先只读识别 shell、SSH、Git、Node、uv、JDK 和权限;已有且满足要求的工具复用。控制端执行器是 Node;bootstrap 的 probe 只做检测。用户提供带 SHA256 的可信安装器并确认后才执行引导。安装器完整命令/作用范围必须先展示。
21
21
 
22
22
  使用 init 创建控制端身份与绝对 state 根,记录当前工具版本;不会顺便连接远端或清理当前机器。host root 默认规范、服务器 README 不含密码、服务器 OPERATIONS 启用、控制端明文总册、严格 Docker data-root 都是默认合同。
23
23
 
@@ -25,4 +25,4 @@ keywords: [ops, initialize, 主机, 持久化, 审批]
25
25
 
26
26
  完成条件:控制端状态有效、目录权限受限、工具盘点有证据,后续入口可以独立运行。部署端未准备好的能力明确列为缺口。
27
27
 
28
- 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.py,不能绕过计划审批直接拼接命令调用主机。
28
+ 命令合同:`<Path>{roots.workflows}/ops/common/USAGE.md</Path>`;所有执行通过 ops.mjs,不能绕过计划审批直接拼接命令调用主机。
@@ -15,7 +15,7 @@
15
15
  ## 运行时根
16
16
 
17
17
  静态代码:`<Path>{roots.workflows}/ops/</Path>`。可整体替换,不存真实业务密码。
18
- 部署机状态:`<Path>{roots.state}/ops/</Path>`。使用 ops.py 时始终显式传入绝对 `--state`,不得指向静态代码目录。
18
+ 部署机状态:`<Path>{roots.state}/ops/</Path>`。使用 ops.mjs 时始终显式传入绝对 `--state`,不得指向静态代码目录。
19
19
  目标服务器根:首次登记 host.root;Linux 建议 `/srv/ops`,Windows 建议 `C:\Ops`。只登记专用目录,禁止系统根、路径穿越和链接跳转。
20
20
 
21
21
  ## 持久化约定
@@ -28,6 +28,9 @@ host_root/
28
28
  DEPLOYMENTS.md
29
29
  docs/standards/DEPLOYMENT-STANDARD.md
30
30
  knowledge/
31
+ INDEX.md
32
+ host-services.json # 主机级入口:WireGuard/Nginx/探测,不是 APP 部署
33
+ public-ingress.json # 跨主机公网→内网映射;入口与出口不是同一条连接
31
34
  _host/ # 主机证据、安装器、有限缓存和隔离
32
35
  _runtime/docker/ # 仅经准备/显式迁移的 Docker Engine
33
36
  app-a/
@@ -62,15 +65,15 @@ host_root/
62
65
 
63
66
  ## 状态字段
64
67
 
65
- schema_version=3;hosts、projects、deployments、allocations、bindings、releases、controller、policies、revision、updated_at。
68
+ schema_version=3;hosts、projects、deployments、allocations、bindings、releases、controller、policies、public_ingress、revision、updated_at。Host.host_services 登记主机级入口。public_ingress 登记跨主机公网映射。
66
69
 
67
- 部署状态区分 planned、running、configured、docs_pending、completed、failed、unknown、retired。version 是计划版本;observed_version 只有运行验证成功才更新。完成必须有 `both-sides-verified` 回执,不能只看容器启动或文档标题。
70
+ 部署状态区分 planned、running、configured、docs_pending、completed、failed、unknown、retired。version 是计划版本;observed_version 只有运行验证成功才更新。完成必须有 `both-sides-verified` 回执,不能只看容器启动或文档标题。主机/全域总册必须同时有服务一览表(含主机级入口)和入口规范;缺一不算完整。
68
71
 
69
72
  单主机 I/H 证据在 `hosts/id/runs/run-id/`;D/跨主机证据在 `releases/run-id/`,各主机保存索引。plan.json 与 approval.json 不可覆盖;journal.jsonl 具有摘要链。摘要链能发现内容修改,但不能单凭自身证明尾部没有被有权者完整截断;还应保留执行回执与备份。
70
73
 
71
74
  ## 路径分配
72
75
 
73
- 部署根由 host/project/layout 唯一派生。所有声明的 APP data/config/env/log/backups 路径都必须在该根内;容器只用显式 bind,禁止命名卷、匿名卷、跨项目 bind 和可写根文件系统。项目 env 文件集中在 env/;Compose 使用 raw env_file,要求实际 Compose >=2.30
76
+ 部署根由 host/project/layout 唯一派生。所有声明的 APP data/config/env/log/backups 路径都必须在该根内;容器只用显式 bind,禁止命名卷、匿名卷、跨项目 bind。默认只读容器根;仅当镜像仍必须写根文件系统时,才允许带 `writable_root_justification` 的 `read_only: false`。config/env 默认 0644 只读挂载,供非 root 镜像用户读取。项目 env 文件集中在 env/;Compose 使用 raw env_file,要求实际 Compose >=2.30。`compose --wait` 之后仍检查容器 running 与 Health=healthy;TCP/docker-proxy 监听不是生产健康证明。
74
77
 
75
78
  原生服务设置 HOME、XDG、缓存、临时目录和 OPS_* 到 APP 根内;Linux systemd 还设置 ProtectSystem/ReadWritePaths。通用自定义命令是用户审核的可执行代码,不是一个能阻止恶意程序所有系统调用的沙箱。来源代码必须可信,必须明确映射项目真实数据参数,并实际验证;发现无法约束的数据路径就阻塞,不能报完成。
76
79
 
@@ -92,4 +95,4 @@ init/register/credential-put 是用户显式请求的部署机本地记录操作
92
95
  恢复:`<Path>{roots.workflows}/ops/common/rules/recovery.md</Path>`。
93
96
  支持边界:`<Path>{roots.workflows}/ops/common/CAPABILITIES.md</Path>`。
94
97
 
95
- 内置执行器:`<Path>{roots.workflows}/ops/common/tools/ops.py</Path>`。自检:`<Path>{roots.workflows}/ops/common/tools/validate-ops.mjs</Path>`。
98
+ 内置执行器:`<Path>{roots.workflows}/ops/common/tools/ops.mjs</Path>`。自检:`<Path>{roots.workflows}/ops/common/tools/validate-ops.mjs</Path>`。
@@ -4,9 +4,9 @@
4
4
 
5
5
  | 能力 | 本版实现 | 运行边界 |
6
6
  |---|---|---|
7
- | 控制端 | Python 3.10+ 标准库 CLI;状态、锁、明文、计划、执行 | 无第三方 Python 包;控制端可本地执行完整闭环 |
7
+ | 控制端 | Node 标准库 CLI(ops.mjs);状态、锁、明文、计划、执行 | 无第三方 npm 包;控制端可本地执行完整闭环 |
8
8
  | Linux local | 原生 oneshot;systemd 配置/权限/健康门;Docker Engine Compose | 本轮隔离 local oneshot 演练;systemd/Docker 需要真实有权限主机验收 |
9
- | SSH | OpenSSH 密钥或 agent;固定 known_hosts;目标身份;可 sudo -n | 目标 Python 3.10+;本轮没有远程主机/ssh 客户端实机验证;不实现交互式 SSH 密码登录 |
9
+ | SSH | OpenSSH 密钥或 agent;固定 known_hosts;目标身份;可 sudo -n | 目标 Node;本轮没有远程主机/ssh 客户端实机验证;不实现交互式 SSH 密码登录 |
10
10
  | Windows 原生 | PowerShell 引导、路径/DACL、同账户登录态 Scheduled Task | 不是无人登录的 Windows Service;真正后台服务需专用 adapter;本轮非 Windows 实机 |
11
11
  | WSL | 单独登记为 Linux 执行目标 | 不把 Windows 主机路径/Docker Desktop VM 当作 WSL 根 |
12
12
  | macOS | 身份探测、POSIX 路径、oneshot | 无 launchd 适配;不是承诺全部平台常驻部署 |
@@ -5,24 +5,24 @@
5
5
  ## 1. 初始化与盘点
6
6
 
7
7
  ```sh
8
- python3 /path/to/ops/common/tools/ops.py --version
9
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops init --controller-id control-a
10
- python3 /path/to/ops/common/tools/ops.py probe --output /safe/path/local-inventory.json
8
+ node /path/to/ops/common/tools/ops.mjs --version
9
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops init --controller-id control-a
10
+ node /path/to/ops/common/tools/ops.mjs probe --output /safe/path/local-inventory.json
11
11
  ```
12
12
 
13
- 没有 Python 时运行 common/tools/bootstrap.sh probe 或 bootstrap.ps1 -Probe,只做检测。经过批准的本地安装器还需精确 SHA256 与确认字符串。完成后重新 init;不要求先安装 uv 才能初始化。
13
+ 没有 Node 时运行 common/tools/bootstrap.sh probe 或 bootstrap.ps1 -Probe,只做检测。经过批准的本地安装器还需精确 SHA256 与确认字符串。完成后重新 init
14
14
 
15
- 初次远端将 host.json 中 identity 写为 discover(仅 probe 支持),connection 包含 hostname、username、known_hosts、python,可选 port、identity_file、sudo、shell。known_hosts 必须已经通过可信方式核对,不能自动信任 ssh-keyscan 输出。
15
+ 初次远端将 host.json 中 identity 写为 discover(仅 probe 支持),connection 包含 hostname、username、known_hosts、node,可选 port、identity_file、sudo、shell。known_hosts 必须已经通过可信方式核对,不能自动信任 ssh-keyscan 输出。
16
16
 
17
17
  ```sh
18
- python3 /path/to/ops/common/tools/ops.py probe --connection-file /safe/path/host-discovery.json --output /safe/path/host-observed.json
18
+ node /path/to/ops/common/tools/ops.mjs probe --connection-file /safe/path/host-discovery.json --output /safe/path/host-observed.json
19
19
  ```
20
20
 
21
21
  核对后将真实 identity 写回 register.json,再登记。正式 register 不接受 discover。
22
22
 
23
23
  ```sh
24
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops register --file /safe/path/register.json
25
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops credential-put --file /safe/path/credential.json
24
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops register --file /safe/path/register.json
25
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops credential-put --file /safe/path/credential.json
26
26
  ```
27
27
 
28
28
  credential-put 只持久化指定凭据,不会重置服务器账户。该导入文件也必须受限保存;不要用 shell 参数直接传密码。
@@ -30,8 +30,8 @@ credential-put 只持久化指定凭据,不会重置服务器账户。该导
30
30
  ## 2. 真实项目分析和固定来源
31
31
 
32
32
  ```sh
33
- python3 /path/to/ops/common/tools/ops.py analyze --source /path/to/project
34
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops source-fetch --project app-a --repository https://example.org/team/app-a.git --commit FULL_40_HEX_COMMIT --allow-network
33
+ node /path/to/ops/common/tools/ops.mjs analyze --source /path/to/project
34
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops source-fetch --project app-a --repository https://example.org/team/app-a.git --commit FULL_40_HEX_COMMIT --allow-network
35
35
  ```
36
36
 
37
37
  analyze 只列相关清单与哈希,不执行仓库程序。Agent 必须读取实际 manifests,按持久化参数、运行方式、网络、数据库迁移和验证创建 spec,不能把探测结果自动等同于完整可运行部署。
@@ -41,10 +41,10 @@ source-fetch 不自动登记新来源版本,后续 spec.resource_updates.proje
41
41
  ## 3. 计划、确认、执行
42
42
 
43
43
  ```sh
44
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops plan --file /safe/path/deploy.json
44
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops plan --file /safe/path/deploy.json
45
45
  # 阅读输出 report 指向的完整 PLAN.md,核对目录、账号版本、影响和恢复。
46
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops approve --run RUN_ID --digest SHA256 --by administrator --statement '我确认此摘要所列的全部目标、配置、影响、明文文件和恢复限制'
47
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops apply --run RUN_ID
46
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops approve --run RUN_ID --digest SHA256 --by administrator --statement '我确认此摘要所列的全部目标、配置、影响、明文文件和恢复限制'
47
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops apply --run RUN_ID
48
48
  ```
49
49
 
50
50
  “继续”“按你说的做”不能在无人确认具体计划时被编造成 approval.json。一次确认只授权所示摘要;现场漂移、工具链代码升级、连接或凭据变化都要重新计划。
@@ -58,14 +58,14 @@ files 的 artifact/ 自动进入新 releases/run-id/artifact;compose/、config
58
58
  ## 4. 环境、Docker、镜像和清理
59
59
 
60
60
  ```sh
61
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops environment-spec --host node-a --file /safe/path/environment-request.json --output /safe/path/host-prepare.json
61
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops environment-spec --host node-a --file /safe/path/environment-request.json --output /safe/path/host-prepare.json
62
62
  # 然后对 host-prepare.json 执行 plan / approve / apply。
63
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops mirror-probe --host node-a --file /safe/path/mirror-candidates.json --allow-network
63
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops mirror-probe --host node-a --file /safe/path/mirror-candidates.json --allow-network
64
64
  ```
65
65
 
66
66
  环境配方不抓 latest;管理器缺失先明确准备安装器。来源测速不修改配置,证书/哈希失败候选不使用,真实配置更换通过 H 的精确 write-file/write-control/命令计划。不能将 Python/npm/Docker/Maven 镜像混为一套规则。
67
67
 
68
- H.host_actions 支持 mkdir、write-file(host.root 内相对路径)、write-control(有限系统控制文件)、install-toolchain(明确写集/原默认/验证)、command(明确写集/验证)、defaults、quarantine、purge-quarantine。系统软件包安装使用明确批准的可信安装脚本,不自动猜当前发行版安装命令;Docker 示例见 service-profiles/docker-engine.md
68
+ H.host_actions 支持 mkdir、write-file(host.root 内相对路径;不得写生成器负责的 README/DEPLOYMENTS/knowledge 账本)、write-control(精确系统控制文件:内置 docker daemon.json 与 ops-*.service,以及经理由/回滚/验证声明的 nginx、wireguard、非 ops- 前缀单元)、install-toolchain(明确写集/原默认/验证)、command(明确写集/验证)、defaults、quarantine、purge-quarantine。系统软件包安装使用明确批准的可信安装脚本,不自动猜当前发行版安装命令;Docker 示例见 service-profiles/docker-engine.md。主机级入口用 resource_updates.hosts[].host_services 与 spec.public_ingress 入账,不要为 Nginx/WireGuard 伪造 APP 部署。
69
69
 
70
70
  隔离仅移动登记 cache/log,返回 released_bytes=0。确需释放空间,再为 `_host/quarantine/旧run/精确item` 生成 purge-quarantine 计划。没有回执、内容变化、超出有限清单或试图删除业务数据时阻塞。
71
71
 
@@ -80,11 +80,11 @@ uninstall 输入 retire_deployments,只停止并保留数据;不会删除共
80
80
  ## 6. 验证和恢复
81
81
 
82
82
  ```sh
83
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops status
84
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops validate
85
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops inspect-run --run RUN_ID
86
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops resume --run RUN_ID
87
- python3 /path/to/ops/common/tools/ops.py --state /path/to/.speculo/ops docs-sync --run RUN_ID
83
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops status
84
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops validate
85
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops inspect-run --run RUN_ID
86
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops resume --run RUN_ID
87
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/.speculo/ops docs-sync --run RUN_ID
88
88
  ```
89
89
 
90
90
  resume 不重放 failed/started-only;docs-sync 仅重试文档,不能修复真正失败的业务动作。真实文档终态失败需新维护计划;只因网络中断但目标已有成功回执的情况可继续校验交付。具体说明见 rules/recovery.md。
@@ -96,7 +96,7 @@ resume 不重放 failed/started-only;docs-sync 仅重试文档,不能修复
96
96
  只清理旧静态 workflows/ops,绝不清理 .speculo/ops 或服务器部署根。非空 v2 保持原文,用新空 STATE 执行 import-legacy;不自动推断主机、密码或共享关系。
97
97
 
98
98
  ```sh
99
- python3 /path/to/ops/common/tools/ops.py --state /path/to/new-ops-state import-legacy --source /path/to/old-state --controller-id control-a
99
+ node /path/to/ops/common/tools/ops.mjs --state /path/to/new-ops-state import-legacy --source /path/to/old-state --controller-id control-a
100
100
  ```
101
101
 
102
102
  已有服务器目录先探测、备份并确认接管/迁移;仅替换静态 workflow 不会自动迁移服务器数据。Speculo 旧 CLI 需要交付包的外围兼容补丁,不能只换 Markdown 还继续用硬编码旧五入口校验器。
@@ -104,9 +104,9 @@ python3 /path/to/ops/common/tools/ops.py --state /path/to/new-ops-state import-l
104
104
  ## 8. 本地演练和测试
105
105
 
106
106
  ```sh
107
- python3 /path/to/ops/common/tools/demo-local.py --output /absolute/empty/demo-root
108
- python3 -m unittest discover -s /path/to/ops/common/tests -v
107
+ node /path/to/ops/common/tools/demo-local.mjs --output /absolute/empty/demo-root
108
+ node --test /path/to/ops/common/tests/test_ops.mjs
109
109
  node /path/to/ops/common/tools/validate-ops.mjs --self-check
110
110
  ```
111
111
 
112
- 演练只使用指定新空目录,创建演示 APP 与演示明文凭据,运行真实有限 Python 程序,完成双边文档;不连接其他主机、不安装软件。它不是生产系统验收。
112
+ 演练只使用指定新空目录,创建演示 APP 与演示明文凭据,运行真实有限 Node 程序,完成双边文档;不连接其他主机、不安装软件。它不是生产系统验收。
@@ -4,4 +4,4 @@
4
4
 
5
5
  register 和 credential 是本地登记请求;compose-app、shared-allocation 是 spec;binding 是放入 spec.bindings 的单个对象。凭据管理员/应用分离。实际共享分配要求 provider 已完成部署并登记 service.compose_service 与 administrator credential;不能只复制示例便声称分配成功。
6
6
 
7
- 真实无网络演练使用 common/tools/demo-local.py --output 新空目录,会自动构造自包含示例与一次精确 demo 批准,严禁把该批准自动化用于生产。
7
+ 真实无网络演练使用 common/tools/demo-local.mjs --output 新空目录,会自动构造自包含示例与一次精确 demo 批准,严禁把该批准自动化用于生产。
@@ -12,7 +12,7 @@
12
12
  "username": "ops",
13
13
  "port": 22,
14
14
  "known_hosts": "/REPLACE/known_hosts",
15
- "python": "python3",
15
+ "node": "node",
16
16
  "sudo": true
17
17
  }
18
18
  }
@@ -16,7 +16,7 @@ private/credentials.json 是版本化明文账本;credential-put 不会修改
16
16
 
17
17
  控制端项目 README、OPERATIONS 与全域总册保存真实值,特殊字符逐字保留。服务端 README 默认无密码但不能缺路径、版本、时间、启动停止、依赖和备份恢复;OPERATIONS 与 DEPLOYMENTS 默认是受限明文。未知旧密码不能编造;密钥认证没有密码,记录实际密钥认证而不是虚构一个口令。
18
18
 
19
- POSIX 账本/文档/配置副本 0600、控制端目录 0700Windows 使用受限 ACL,不以 chmod 代替 DACL。明文不进入 Git、Web 目录、构建上下文、普通日志;env 是指定的本地配置文件例外,不能再进入镜像层。示例凭据全为演示,不可用于生产。
19
+ POSIX 账本、env 与明文文档 0600、控制端目录 0700。`config/` 与 `*.conf`/`*.acl` 默认 0644,供非 root 容器用户读取只读挂载;Windows 使用受限 ACL,不以 chmod 代替 DACL。明文不进入 Git、Web 目录、构建上下文、普通日志;env 是指定的本地配置文件例外,不能再进入镜像层。示例凭据全为演示,不可用于生产。
20
20
 
21
21
  ## 双边完成门
22
22
 
@@ -57,7 +57,7 @@
57
57
  "type": "string",
58
58
  "minLength": 1
59
59
  },
60
- "python": {
60
+ "node": {
61
61
  "type": "string",
62
62
  "minLength": 1
63
63
  },
@@ -73,6 +73,9 @@
73
73
  },
74
74
  "required": [],
75
75
  "additionalProperties": false
76
+ },
77
+ "host_services": {
78
+ "$ref": "#/$defs/host_services"
76
79
  }
77
80
  },
78
81
  "required": [
@@ -84,5 +87,65 @@
84
87
  "identity",
85
88
  "connection"
86
89
  ],
87
- "additionalProperties": false
90
+ "additionalProperties": false,
91
+ "$defs": {
92
+ "host_services": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "object",
96
+ "properties": {
97
+ "id": {
98
+ "type": "string",
99
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
100
+ "maxLength": 80
101
+ },
102
+ "kind": {
103
+ "enum": [
104
+ "wireguard",
105
+ "nginx",
106
+ "systemd",
107
+ "probe",
108
+ "other"
109
+ ]
110
+ },
111
+ "unit": {
112
+ "type": "string",
113
+ "minLength": 1
114
+ },
115
+ "listen_port": {
116
+ "type": "integer",
117
+ "minimum": 1,
118
+ "maximum": 65535
119
+ },
120
+ "listen": {
121
+ "type": "array",
122
+ "items": {
123
+ "type": "string",
124
+ "minLength": 1
125
+ }
126
+ },
127
+ "tunnel_address": {
128
+ "type": "string",
129
+ "minLength": 1
130
+ },
131
+ "config_path": {
132
+ "type": "string",
133
+ "minLength": 1
134
+ },
135
+ "public_url": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "notes": {
140
+ "type": "string"
141
+ }
142
+ },
143
+ "required": [
144
+ "id",
145
+ "kind"
146
+ ],
147
+ "additionalProperties": false
148
+ }
149
+ }
150
+ }
88
151
  }