@agentteams/runner 0.0.108 → 0.0.110

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 (74) hide show
  1. package/dist/api-client.js +6 -0
  2. package/dist/api-client.js.map +1 -1
  3. package/dist/api-client.test.js +21 -12
  4. package/dist/api-client.test.js.map +1 -1
  5. package/dist/handlers/trigger-handler.js +24 -4
  6. package/dist/handlers/trigger-handler.js.map +1 -1
  7. package/dist/handlers/trigger-handler.test.js +296 -13
  8. package/dist/handlers/trigger-handler.test.js.map +1 -1
  9. package/dist/runners/amp.js +2 -2
  10. package/dist/runners/amp.js.map +1 -1
  11. package/dist/runners/antigravity.d.ts +5 -2
  12. package/dist/runners/antigravity.js +30 -16
  13. package/dist/runners/antigravity.js.map +1 -1
  14. package/dist/runners/antigravity.test.js +9 -8
  15. package/dist/runners/antigravity.test.js.map +1 -1
  16. package/dist/runners/claude-code.js +2 -2
  17. package/dist/runners/claude-code.js.map +1 -1
  18. package/dist/runners/codex-json-parser.d.ts +17 -0
  19. package/dist/runners/codex-json-parser.js +207 -0
  20. package/dist/runners/codex-json-parser.js.map +1 -0
  21. package/dist/runners/codex-json-parser.test.d.ts +1 -0
  22. package/dist/runners/codex-json-parser.test.js +77 -0
  23. package/dist/runners/codex-json-parser.test.js.map +1 -0
  24. package/dist/runners/codex.js +25 -13
  25. package/dist/runners/codex.js.map +1 -1
  26. package/dist/runners/codex.test.js +6 -0
  27. package/dist/runners/codex.test.js.map +1 -1
  28. package/dist/runners/copilot-cli.js +22 -10
  29. package/dist/runners/copilot-cli.js.map +1 -1
  30. package/dist/runners/copilot-cli.test.js +20 -4
  31. package/dist/runners/copilot-cli.test.js.map +1 -1
  32. package/dist/runners/copilot-json-parser.d.ts +18 -0
  33. package/dist/runners/copilot-json-parser.js +154 -0
  34. package/dist/runners/copilot-json-parser.js.map +1 -0
  35. package/dist/runners/copilot-json-parser.test.d.ts +1 -0
  36. package/dist/runners/copilot-json-parser.test.js +59 -0
  37. package/dist/runners/copilot-json-parser.test.js.map +1 -0
  38. package/dist/runners/cursor-cli.js +2 -2
  39. package/dist/runners/cursor-cli.js.map +1 -1
  40. package/dist/runners/kimi-cli.js +1 -1
  41. package/dist/runners/kimi-cli.js.map +1 -1
  42. package/dist/runners/log-reporter.d.ts +2 -2
  43. package/dist/runners/log-reporter.js +19 -14
  44. package/dist/runners/log-reporter.js.map +1 -1
  45. package/dist/runners/log-reporter.test.js +49 -12
  46. package/dist/runners/log-reporter.test.js.map +1 -1
  47. package/dist/runners/opencode-json-parser.js +12 -4
  48. package/dist/runners/opencode-json-parser.js.map +1 -1
  49. package/dist/runners/opencode-json-parser.test.js +11 -6
  50. package/dist/runners/opencode-json-parser.test.js.map +1 -1
  51. package/dist/runners/opencode.js +2 -2
  52. package/dist/runners/opencode.js.map +1 -1
  53. package/dist/runners/stream-json-parser.d.ts +3 -0
  54. package/dist/runners/stream-json-parser.js +34 -10
  55. package/dist/runners/stream-json-parser.js.map +1 -1
  56. package/dist/runners/stream-json-parser.test.js +21 -10
  57. package/dist/runners/stream-json-parser.test.js.map +1 -1
  58. package/dist/runners/types.d.ts +3 -2
  59. package/dist/types.d.ts +3 -0
  60. package/dist/utils/machine-id.d.ts +32 -0
  61. package/dist/utils/machine-id.js +88 -0
  62. package/dist/utils/machine-id.js.map +1 -0
  63. package/dist/utils/machine-id.test.d.ts +1 -0
  64. package/dist/utils/machine-id.test.js +97 -0
  65. package/dist/utils/machine-id.test.js.map +1 -0
  66. package/dist/utils/working-directory.d.ts +27 -0
  67. package/dist/utils/working-directory.js +96 -0
  68. package/dist/utils/working-directory.js.map +1 -0
  69. package/dist/utils/working-directory.test.d.ts +1 -0
  70. package/dist/utils/working-directory.test.js +145 -0
  71. package/dist/utils/working-directory.test.js.map +1 -0
  72. package/native/bin/win32-x64/agentrunner-launcher.exe +0 -0
  73. package/native/bin/win32-x64/manifest.json +2 -2
  74. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stream-json-parser.test.js","sourceRoot":"","sources":["../../src/runners/stream-json-parser.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,MAAM,GAAG,GAAG,qCAAqC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,iBAAiB,EAAE,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,2CAA2C,CAAC,EAAE,cAAc,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,yCAAyC,CAAC,EAAE,yCAAyC,CAAC,CAAC;IAClH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,GAAG,GAAG,qCAAqC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,iBAAiB,EAAE,EAAE,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,sBAAsB,EAAE,EAAE,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACtH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrH,MAAM,CAAC,KAAK,CACV,gBAAgB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,iBAAiB,EAAE,EAAE,GAAG,CAAC,EAC1E,+BAA+B,CAChC,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC1G,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACrH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7F,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAC9F,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,CACV,gBAAgB,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EACzE,8BAA8B,CAC/B,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,EAAE;KAChF,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;QAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE;KAC/D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,GAAG,GAAG,qCAAqC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,6BAA6B,EAAE;iBAC1D;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;IAC5E,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,4CAA4C,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8DAA8D,EAAE,CAAC;SAClG;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAC1C,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sDAAsD,EAAE;KACnF,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC,CAAC;IAE/G,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;QACzC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iDAAiD,EAAE;KAC9E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,0BAA0B,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;QACvG,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE;KAC/F,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE;KAC/F,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAEhD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,GAAG,EAAE;IACtF,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/G,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,KAAK,KAAK,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE1C,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qFAAqF,EAAE,GAAG,EAAE;IAC/F,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAElE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC;IAC7D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gGAAgG,EAAE,GAAG,EAAE;IAC1G,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAE5C,8FAA8F;IAC9F,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACvG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAE1F,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEjB,MAAM,qBAAqB,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;IAEhD,sFAAsF;IACtF,MAAM,SAAS,GAAG,GAAG,gBAAgB,KAAK,qBAAqB,EAAE,CAAC;IAClE,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,GAAG,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAE;SAC5E,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,QAAQ,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uGAAuG,EAAE,GAAG,EAAE;IACjH,MAAM,OAAO,GAA8C,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,gCAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CACjC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAExF,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CACT,GAAG,SAAS,CAAC,uBAAuB,CAAC;EACvC,IAAI,CAAC,SAAS,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE;KACrE,CAAC,IAAI,CACH,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1G,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QACxB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE;QACrD,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE;QACnD,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oCAAoC,EAAE;QAChE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;QACtD,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;KACvD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,gCAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,SAAS,CAAC;YAChB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;SAC7D,CAAC,IAAI,CACP,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+FAA+F,EAAE,GAAG,EAAE;IACzG,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,gCAAgC,CAC7C,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACpE;QACE,GAAG,EAAE,OAAO;KACb,CACF,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE;QAC3F,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;QAClF,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE;QACzE;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE;gBACT,YAAY,EAAE;oBACZ,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;oBAClC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iBACxE;aACF;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE;gBACT,gBAAgB,EAAE;oBAChB,IAAI,EAAE,EAAE,OAAO,EAAE,yFAAyF,EAAE;oBAC5G,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE;iBAC1D;aACF;SACF;KACF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;QACzB,6CAA6C;QAC7C,qCAAqC;QACrC,0BAA0B;KAC3B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,sBAAsB;QACtB,yBAAyB;QACzB,cAAc;QACd,gBAAgB;KACjB,EAAE,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;IAChG,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,gCAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,YAAoB,EAAE,EAAE,CAC9D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACtG,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAExF,MAAM,CAAC,IAAI,CACT,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,UAAU,CAAC,IAAI,CAC9H,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qFAAqF,EAAE,GAAG,EAAE;IAC/F,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,gCAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtH,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAC/G,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,gCAAgC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE;KACjE,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stream-json-parser.test.js","sourceRoot":"","sources":["../../src/runners/stream-json-parser.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TriggerLogCategory } from '../types.js';
1
2
  export interface Runner {
2
3
  run(opts: RunnerOptions): Promise<RunResult>;
3
4
  }
@@ -16,8 +17,8 @@ export interface RunnerOptions {
16
17
  fastMode?: boolean;
17
18
  effort?: string | null;
18
19
  signal?: AbortSignal;
19
- onStdoutChunk?: (chunk: string) => void;
20
- onStderrChunk?: (chunk: string) => void;
20
+ onStdoutChunk?: (chunk: string, category: TriggerLogCategory, toolName?: string) => void;
21
+ onStderrChunk?: (chunk: string, category: 'STDERR') => void;
21
22
  }
22
23
  export type RunResult = {
23
24
  exitCode: number;
package/dist/types.d.ts CHANGED
@@ -110,8 +110,11 @@ export type TriggerRuntimeAttachment = {
110
110
  expiresInSeconds: number;
111
111
  };
112
112
  export type TriggerLogLevel = 'INFO' | 'WARN' | 'ERROR';
113
+ export type TriggerLogCategory = 'SYSTEM' | 'TEXT' | 'THINKING' | 'TOOL' | 'RESULT' | 'STDERR';
113
114
  export type TriggerLogInput = {
114
115
  level: TriggerLogLevel;
116
+ category?: TriggerLogCategory;
117
+ toolName?: string;
115
118
  message: string;
116
119
  };
117
120
  export type DiscoveryRepository = {
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 머신 단위 신원(machineId).
3
+ *
4
+ * 러너와 CLI가 **같은 파일**을 공유해, "이 에이전트는 어느 머신에 등록됐는가"와 "이 러너는 어느
5
+ * 머신에서 도는가"를 서버가 대조할 수 있게 한다. 비밀값이 아니며 인증/인가 판정에는 쓰지 않는다
6
+ * (토큰 인증 이후의 부가 식별 정보).
7
+ *
8
+ * 파일 위치는 러너 설정(`~/.agentteams/daemon.json`)과 같은 디렉터리이지만, 토큰과 달리
9
+ * 자격증명이 아니므로 러너 설정과 분리해 CLI도 읽을 수 있게 둔다.
10
+ */
11
+ export declare const getMachineIdPath: () => string;
12
+ export type MachineIdFileDependencies = {
13
+ path?: string;
14
+ readFile?: (path: string) => string;
15
+ writeFileExclusive?: (path: string, content: string) => void;
16
+ writeFileOverwrite?: (path: string, content: string) => void;
17
+ generateId?: () => string;
18
+ };
19
+ /**
20
+ * machineId 파일을 읽고, 없으면 생성해 반환한다.
21
+ *
22
+ * 같은 머신에서 러너와 CLI가 동시에 실행될 수 있으므로 생성은 배타 쓰기(`wx`)로 수행하고,
23
+ * 경쟁에서 진 쪽은 먼저 만들어진 값을 다시 읽어 같은 값을 반환한다. 어떤 이유로든 읽기·쓰기가
24
+ * 모두 실패하면 `null`을 반환해 호출자가 machineId 없이 계속 진행하게 한다(기능 저하만 발생).
25
+ */
26
+ export declare const readOrCreateMachineId: (dependencies?: MachineIdFileDependencies) => string | null;
27
+ /**
28
+ * 프로세스 수명 동안 machineId를 한 번만 해석해 재사용한다(요청마다 파일 I/O를 하지 않는다).
29
+ */
30
+ export declare const getMachineId: () => string | null;
31
+ /** 테스트 전용: 캐시를 비운다. */
32
+ export declare const resetMachineIdCache: () => void;
@@ -0,0 +1,88 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { dirname, join } from 'node:path';
5
+ /**
6
+ * 머신 단위 신원(machineId).
7
+ *
8
+ * 러너와 CLI가 **같은 파일**을 공유해, "이 에이전트는 어느 머신에 등록됐는가"와 "이 러너는 어느
9
+ * 머신에서 도는가"를 서버가 대조할 수 있게 한다. 비밀값이 아니며 인증/인가 판정에는 쓰지 않는다
10
+ * (토큰 인증 이후의 부가 식별 정보).
11
+ *
12
+ * 파일 위치는 러너 설정(`~/.agentteams/daemon.json`)과 같은 디렉터리이지만, 토큰과 달리
13
+ * 자격증명이 아니므로 러너 설정과 분리해 CLI도 읽을 수 있게 둔다.
14
+ */
15
+ export const getMachineIdPath = () => join(homedir(), '.agentteams', 'machine-id');
16
+ const normalizeMachineId = (rawValue) => {
17
+ const normalized = rawValue.trim();
18
+ return normalized.length > 0 ? normalized : null;
19
+ };
20
+ /**
21
+ * machineId 파일을 읽고, 없으면 생성해 반환한다.
22
+ *
23
+ * 같은 머신에서 러너와 CLI가 동시에 실행될 수 있으므로 생성은 배타 쓰기(`wx`)로 수행하고,
24
+ * 경쟁에서 진 쪽은 먼저 만들어진 값을 다시 읽어 같은 값을 반환한다. 어떤 이유로든 읽기·쓰기가
25
+ * 모두 실패하면 `null`을 반환해 호출자가 machineId 없이 계속 진행하게 한다(기능 저하만 발생).
26
+ */
27
+ export const readOrCreateMachineId = (dependencies = {}) => {
28
+ const path = dependencies.path ?? getMachineIdPath();
29
+ const readFile = dependencies.readFile ?? ((target) => readFileSync(target, 'utf8'));
30
+ const generateId = dependencies.generateId ?? randomUUID;
31
+ const writeFile = (target, content, exclusive) => {
32
+ mkdirSync(dirname(target), { recursive: true });
33
+ writeFileSync(target, content, { encoding: 'utf8', flag: exclusive ? 'wx' : 'w', mode: 0o600 });
34
+ // umask의 영향을 받지 않도록 권한을 명시적으로 고정한다.
35
+ chmodSync(target, 0o600);
36
+ };
37
+ const writeFileExclusive = dependencies.writeFileExclusive ?? ((target, content) => writeFile(target, content, true));
38
+ const writeFileOverwrite = dependencies.writeFileOverwrite ?? ((target, content) => writeFile(target, content, false));
39
+ try {
40
+ const existing = normalizeMachineId(readFile(path));
41
+ if (existing) {
42
+ return existing;
43
+ }
44
+ }
45
+ catch {
46
+ // 파일이 없거나 읽을 수 없으면 아래에서 생성을 시도한다.
47
+ }
48
+ const generated = generateId();
49
+ try {
50
+ writeFileExclusive(path, `${generated}\n`);
51
+ return generated;
52
+ }
53
+ catch {
54
+ // 배타 쓰기 실패는 두 경우다: (1) 다른 프로세스가 먼저 만들었다 → 그 값을 쓴다,
55
+ // (2) 파일은 있는데 비어 있다(중단된 쓰기 등) → 스스로 복구해 다시 채운다.
56
+ try {
57
+ const raced = normalizeMachineId(readFile(path));
58
+ if (raced) {
59
+ return raced;
60
+ }
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ try {
66
+ writeFileOverwrite(path, `${generated}\n`);
67
+ return generated;
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
73
+ };
74
+ let cachedMachineId;
75
+ /**
76
+ * 프로세스 수명 동안 machineId를 한 번만 해석해 재사용한다(요청마다 파일 I/O를 하지 않는다).
77
+ */
78
+ export const getMachineId = () => {
79
+ if (cachedMachineId === undefined) {
80
+ cachedMachineId = readOrCreateMachineId();
81
+ }
82
+ return cachedMachineId;
83
+ };
84
+ /** 테스트 전용: 캐시를 비운다. */
85
+ export const resetMachineIdCache = () => {
86
+ cachedMachineId = undefined;
87
+ };
88
+ //# sourceMappingURL=machine-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.js","sourceRoot":"","sources":["../../src/utils/machine-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAU3F,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAiB,EAAE;IAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,eAA0C,EAAE,EAAiB,EAAE;IACnG,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC;IACzD,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,SAAkB,EAAE,EAAE;QACxE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,oCAAoC;QACpC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,MAAM,kBAAkB,GACtB,YAAY,CAAC,kBAAkB,IAAI,CAAC,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7G,MAAM,kBAAkB,GACtB,YAAY,CAAC,kBAAkB,IAAI,CAAC,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9G,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,kBAAkB,CAAC,IAAI,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;QACnD,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,kBAAkB,CAAC,IAAI,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,eAA0C,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAkB,EAAE;IAC9C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,GAAG,qBAAqB,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAS,EAAE;IAC5C,eAAe,GAAG,SAAS,CAAC;AAC9B,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,97 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { mkdtemp, rm, readFile, stat, writeFile } from 'node:fs/promises';
4
+ import { homedir, tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { getMachineId, getMachineIdPath, readOrCreateMachineId, resetMachineIdCache } from './machine-id.js';
7
+ const withTempDir = async (run) => {
8
+ const dir = await mkdtemp(join(tmpdir(), 'machine-id-test-'));
9
+ try {
10
+ await run(dir);
11
+ }
12
+ finally {
13
+ await rm(dir, { recursive: true, force: true });
14
+ }
15
+ };
16
+ test('getMachineIdPath points at the file shared by the runner and the CLI', () => {
17
+ assert.equal(getMachineIdPath(), join(homedir(), '.agentteams', 'machine-id'));
18
+ });
19
+ test('readOrCreateMachineId creates the file once and reuses the value afterwards', async () => {
20
+ await withTempDir(async (dir) => {
21
+ const path = join(dir, 'nested', 'machine-id');
22
+ const first = readOrCreateMachineId({ path });
23
+ assert.ok(first);
24
+ assert.match(first, /^[0-9a-f-]{36}$/);
25
+ const stored = await readFile(path, 'utf8');
26
+ assert.equal(stored.trim(), first);
27
+ const second = readOrCreateMachineId({ path });
28
+ assert.equal(second, first);
29
+ });
30
+ });
31
+ test('readOrCreateMachineId writes the file with owner-only permissions', async (t) => {
32
+ if (process.platform === 'win32') {
33
+ t.skip('POSIX file mode is not meaningful on Windows');
34
+ return;
35
+ }
36
+ await withTempDir(async (dir) => {
37
+ const path = join(dir, 'machine-id');
38
+ readOrCreateMachineId({ path });
39
+ const stats = await stat(path);
40
+ assert.equal(stats.mode & 0o777, 0o600);
41
+ });
42
+ });
43
+ test('readOrCreateMachineId trims surrounding whitespace from an existing file', async () => {
44
+ await withTempDir(async (dir) => {
45
+ const path = join(dir, 'machine-id');
46
+ await writeFile(path, ' existing-machine-id\n', 'utf8');
47
+ assert.equal(readOrCreateMachineId({ path }), 'existing-machine-id');
48
+ });
49
+ });
50
+ test('readOrCreateMachineId regenerates when the existing file is blank', async () => {
51
+ await withTempDir(async (dir) => {
52
+ const path = join(dir, 'machine-id');
53
+ await writeFile(path, '\n', 'utf8');
54
+ const resolved = readOrCreateMachineId({ path });
55
+ assert.ok(resolved);
56
+ assert.equal((await readFile(path, 'utf8')).trim(), resolved);
57
+ });
58
+ });
59
+ test('readOrCreateMachineId returns the value written by a racing process', () => {
60
+ let fileContent = null;
61
+ const resolved = readOrCreateMachineId({
62
+ path: '/machine-id',
63
+ readFile: () => {
64
+ if (fileContent === null) {
65
+ // 첫 읽기는 파일이 없는 상태를 흉내낸다. 이후에는 경쟁 프로세스가 쓴 값이 보인다.
66
+ fileContent = 'winner-machine-id\n';
67
+ throw new Error('ENOENT');
68
+ }
69
+ return fileContent;
70
+ },
71
+ writeFileExclusive: () => {
72
+ throw new Error('EEXIST');
73
+ },
74
+ generateId: () => 'loser-machine-id',
75
+ });
76
+ assert.equal(resolved, 'winner-machine-id');
77
+ });
78
+ test('readOrCreateMachineId returns null when the file can be neither read nor written', () => {
79
+ const resolved = readOrCreateMachineId({
80
+ path: '/machine-id',
81
+ readFile: () => {
82
+ throw new Error('EACCES');
83
+ },
84
+ writeFileExclusive: () => {
85
+ throw new Error('EACCES');
86
+ },
87
+ });
88
+ assert.equal(resolved, null);
89
+ });
90
+ test('getMachineId caches the resolved value for the process lifetime', () => {
91
+ resetMachineIdCache();
92
+ const first = getMachineId();
93
+ const second = getMachineId();
94
+ assert.equal(second, first);
95
+ assert.ok(first);
96
+ });
97
+ //# sourceMappingURL=machine-id.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.test.js","sourceRoot":"","sources":["../../src/utils/machine-id.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 러너가 실행 cwd로 쓰는 경로가 "그 머신에 실제로 존재하는 프로젝트"인지 판정한다.
3
+ *
4
+ * 러너는 실행 시작과 동시에 `<cwd>/.agentteams/runner/log`를 `mkdir(recursive)`로 만들기 때문에,
5
+ * 다른 머신에 등록된 에이전트의 authPath를 집어가면 빈 디렉터리를 새로 만들고 그 안에서 실행된다.
6
+ * 판정은 러너 진입 이전 단계에서 수행해야 하며(디렉터리 생성 전), 8종 러너 공통 경로인
7
+ * trigger handler 한 곳에서만 호출한다.
8
+ */
9
+ export declare const PROJECT_MARKER_RELATIVE_PATH: string;
10
+ export type WorkingDirectoryCheckDependencies = {
11
+ pathExists?: (path: string) => boolean;
12
+ isGitRepo?: (path: string) => boolean;
13
+ readProjectMarker?: (path: string) => string | null;
14
+ expectedProjectId?: string | null;
15
+ };
16
+ export type WorkingDirectoryCheckCode = 'MISSING_AUTH_PATH' | 'DIRECTORY_NOT_FOUND' | 'NOT_A_PROJECT_DIRECTORY' | 'PROJECT_MISMATCH';
17
+ export type WorkingDirectoryCheck = {
18
+ valid: true;
19
+ } | {
20
+ valid: false;
21
+ code: WorkingDirectoryCheckCode;
22
+ reason: string;
23
+ };
24
+ /**
25
+ * 실행 직전 작업 디렉터리 검증. 부수 효과가 없는 순수 판정 함수다(디렉터리를 만들지 않는다).
26
+ */
27
+ export declare function checkRunnerWorkingDirectory(authPath: string | null | undefined, dependencies?: WorkingDirectoryCheckDependencies): WorkingDirectoryCheck;
@@ -0,0 +1,96 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { isGitRepo } from './git-worktree.js';
4
+ /**
5
+ * 러너가 실행 cwd로 쓰는 경로가 "그 머신에 실제로 존재하는 프로젝트"인지 판정한다.
6
+ *
7
+ * 러너는 실행 시작과 동시에 `<cwd>/.agentteams/runner/log`를 `mkdir(recursive)`로 만들기 때문에,
8
+ * 다른 머신에 등록된 에이전트의 authPath를 집어가면 빈 디렉터리를 새로 만들고 그 안에서 실행된다.
9
+ * 판정은 러너 진입 이전 단계에서 수행해야 하며(디렉터리 생성 전), 8종 러너 공통 경로인
10
+ * trigger handler 한 곳에서만 호출한다.
11
+ */
12
+ export const PROJECT_MARKER_RELATIVE_PATH = join('.agentteams', 'config.json');
13
+ const defaultReadProjectMarker = (path) => {
14
+ try {
15
+ return readFileSync(path, 'utf8');
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ };
21
+ // 마커에서 projectId만 뽑는다. 형식이 깨졌거나 값이 없으면 null(=판정 불가).
22
+ const readMarkerProjectId = (raw) => {
23
+ if (!raw) {
24
+ return null;
25
+ }
26
+ try {
27
+ const parsed = JSON.parse(raw);
28
+ if (typeof parsed !== 'object' || parsed === null) {
29
+ return null;
30
+ }
31
+ const projectId = parsed.projectId;
32
+ return typeof projectId === 'string' && projectId.trim().length > 0 ? projectId.trim() : null;
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ };
38
+ const WRONG_MACHINE_HINT = 'Request the run on the runner installed on the machine where this agent was registered, ' +
39
+ 'or re-register the agent on this machine.';
40
+ /**
41
+ * 실행 직전 작업 디렉터리 검증. 부수 효과가 없는 순수 판정 함수다(디렉터리를 만들지 않는다).
42
+ */
43
+ export function checkRunnerWorkingDirectory(authPath, dependencies = {}) {
44
+ const pathExists = dependencies.pathExists ?? existsSync;
45
+ const checkIsGitRepo = dependencies.isGitRepo ?? isGitRepo;
46
+ const readProjectMarker = dependencies.readProjectMarker ?? defaultReadProjectMarker;
47
+ const expectedProjectId = dependencies.expectedProjectId?.trim() || null;
48
+ const normalizedAuthPath = typeof authPath === 'string' ? authPath.trim() : '';
49
+ if (normalizedAuthPath.length === 0) {
50
+ return {
51
+ valid: false,
52
+ code: 'MISSING_AUTH_PATH',
53
+ reason: 'Runner workspace path is not configured for this agent; run aborted before start. ' +
54
+ `Set the agent's workspace path first. ${WRONG_MACHINE_HINT}`,
55
+ };
56
+ }
57
+ if (!pathExists(normalizedAuthPath)) {
58
+ return {
59
+ valid: false,
60
+ code: 'DIRECTORY_NOT_FOUND',
61
+ reason: `Runner workspace ${normalizedAuthPath} does not exist on this runner, ` +
62
+ `so the run was aborted before start and the directory was not created. ${WRONG_MACHINE_HINT}`,
63
+ };
64
+ }
65
+ const markerPath = join(normalizedAuthPath, PROJECT_MARKER_RELATIVE_PATH);
66
+ const hasProjectMarker = pathExists(markerPath);
67
+ // 마커가 있고 양쪽 projectId를 모두 아는 경우에만 프로젝트 동일성을 판정한다. "존재하는 어떤 git
68
+ // 저장소"라도 통과시키면, 같은 사용자명·같은 디렉터리 배치를 쓰는 흔한 환경에서 다른 머신의
69
+ // 트리거가 무관한 저장소에 그대로 맞아떨어져 이 검증이 없애려던 조용한 오실행이 남는다.
70
+ if (hasProjectMarker && expectedProjectId) {
71
+ const markerProjectId = readMarkerProjectId(readProjectMarker(markerPath));
72
+ if (markerProjectId && markerProjectId !== expectedProjectId) {
73
+ return {
74
+ valid: false,
75
+ code: 'PROJECT_MISMATCH',
76
+ reason: `Runner workspace ${normalizedAuthPath} belongs to a different AgentTeams project ` +
77
+ `(${PROJECT_MARKER_RELATIVE_PATH} projectId ${markerProjectId} != ${expectedProjectId}); ` +
78
+ `run aborted before start. ${WRONG_MACHINE_HINT}`,
79
+ };
80
+ }
81
+ if (markerProjectId) {
82
+ return { valid: true };
83
+ }
84
+ // 마커를 읽지 못했거나 projectId가 없으면 판정 불가로 보고 아래 폴백으로 내려간다.
85
+ }
86
+ if (hasProjectMarker || checkIsGitRepo(normalizedAuthPath)) {
87
+ return { valid: true };
88
+ }
89
+ return {
90
+ valid: false,
91
+ code: 'NOT_A_PROJECT_DIRECTORY',
92
+ reason: `Runner workspace ${normalizedAuthPath} exists on this runner but is neither a git repository nor an ` +
93
+ `AgentTeams project (no ${PROJECT_MARKER_RELATIVE_PATH}); run aborted before start. ${WRONG_MACHINE_HINT}`,
94
+ };
95
+ }
96
+ //# sourceMappingURL=working-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working-directory.js","sourceRoot":"","sources":["../../src/utils/working-directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,145 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { execFileSync } from 'node:child_process';
4
+ import { existsSync } from 'node:fs';
5
+ import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
6
+ import { tmpdir } from 'node:os';
7
+ import { join } from 'node:path';
8
+ import { checkRunnerWorkingDirectory } from './working-directory.js';
9
+ const withTempDir = async (run) => {
10
+ const dir = await mkdtemp(join(tmpdir(), 'working-directory-test-'));
11
+ try {
12
+ await run(dir);
13
+ }
14
+ finally {
15
+ await rm(dir, { recursive: true, force: true });
16
+ }
17
+ };
18
+ test('checkRunnerWorkingDirectory rejects a missing authPath', () => {
19
+ for (const value of [null, undefined, '', ' ']) {
20
+ const result = checkRunnerWorkingDirectory(value);
21
+ assert.equal(result.valid, false);
22
+ assert.equal(result.valid === false && result.code, 'MISSING_AUTH_PATH');
23
+ }
24
+ });
25
+ test('checkRunnerWorkingDirectory rejects a path that does not exist on this runner', () => {
26
+ const result = checkRunnerWorkingDirectory('/missing/workspace', {
27
+ pathExists: () => false,
28
+ isGitRepo: () => true,
29
+ });
30
+ assert.equal(result.valid, false);
31
+ assert.equal(result.valid === false && result.code, 'DIRECTORY_NOT_FOUND');
32
+ assert.match(result.valid === false ? result.reason : '', /does not exist on this runner/);
33
+ assert.match(result.valid === false ? result.reason : '', /machine where this agent was registered/);
34
+ });
35
+ test('checkRunnerWorkingDirectory accepts a directory that has the AgentTeams project marker', () => {
36
+ const checkedPaths = [];
37
+ const result = checkRunnerWorkingDirectory('/workspace', {
38
+ pathExists: (path) => {
39
+ checkedPaths.push(path);
40
+ return true;
41
+ },
42
+ isGitRepo: () => {
43
+ throw new Error('isGitRepo should not run once the project marker is found');
44
+ },
45
+ });
46
+ assert.deepEqual(result, { valid: true });
47
+ assert.deepEqual(checkedPaths, ['/workspace', join('/workspace', '.agentteams', 'config.json')]);
48
+ });
49
+ test('checkRunnerWorkingDirectory accepts a git repository without the project marker', () => {
50
+ const result = checkRunnerWorkingDirectory('/workspace', {
51
+ pathExists: (path) => path === '/workspace',
52
+ isGitRepo: () => true,
53
+ });
54
+ assert.deepEqual(result, { valid: true });
55
+ });
56
+ test('checkRunnerWorkingDirectory rejects a directory that is neither a git repo nor a project', () => {
57
+ const result = checkRunnerWorkingDirectory('/workspace', {
58
+ pathExists: (path) => path === '/workspace',
59
+ isGitRepo: () => false,
60
+ });
61
+ assert.equal(result.valid, false);
62
+ assert.equal(result.valid === false && result.code, 'NOT_A_PROJECT_DIRECTORY');
63
+ assert.match(result.valid === false ? result.reason : '', /\.agentteams[\\/]config\.json/);
64
+ });
65
+ test('checkRunnerWorkingDirectory rejects a marker that belongs to a different project', () => {
66
+ const result = checkRunnerWorkingDirectory('/workspace', {
67
+ pathExists: () => true,
68
+ isGitRepo: () => {
69
+ throw new Error('the git fallback must not rescue a project mismatch');
70
+ },
71
+ readProjectMarker: () => JSON.stringify({ projectId: 'other-project' }),
72
+ expectedProjectId: 'this-project',
73
+ });
74
+ assert.equal(result.valid, false);
75
+ assert.equal(result.valid === false && result.code, 'PROJECT_MISMATCH');
76
+ assert.match(result.valid === false ? result.reason : '', /other-project/);
77
+ assert.match(result.valid === false ? result.reason : '', /this-project/);
78
+ });
79
+ test('checkRunnerWorkingDirectory accepts a marker whose projectId matches the trigger', () => {
80
+ const result = checkRunnerWorkingDirectory('/workspace', {
81
+ pathExists: () => true,
82
+ isGitRepo: () => {
83
+ throw new Error('isGitRepo should not run once the project marker matches');
84
+ },
85
+ readProjectMarker: () => JSON.stringify({ projectId: 'this-project' }),
86
+ expectedProjectId: 'this-project',
87
+ });
88
+ assert.deepEqual(result, { valid: true });
89
+ });
90
+ test('checkRunnerWorkingDirectory falls back to the git check when the marker is unreadable', () => {
91
+ // 마커를 읽지 못하거나 projectId가 없으면 "다른 프로젝트"라고 단정할 수 없으므로 기존 판정으로 내려간다.
92
+ for (const marker of [null, 'not json', JSON.stringify({ teamId: 'team-1' })]) {
93
+ const result = checkRunnerWorkingDirectory('/workspace', {
94
+ pathExists: () => true,
95
+ isGitRepo: () => false,
96
+ readProjectMarker: () => marker,
97
+ expectedProjectId: 'this-project',
98
+ });
99
+ assert.deepEqual(result, { valid: true }, `marker=${String(marker)}`);
100
+ }
101
+ });
102
+ test('checkRunnerWorkingDirectory skips the project check when the trigger has no projectId', () => {
103
+ const result = checkRunnerWorkingDirectory('/workspace', {
104
+ pathExists: () => true,
105
+ isGitRepo: () => false,
106
+ readProjectMarker: () => JSON.stringify({ projectId: 'other-project' }),
107
+ expectedProjectId: null,
108
+ });
109
+ assert.deepEqual(result, { valid: true });
110
+ });
111
+ test('checkRunnerWorkingDirectory judges real directories without creating anything', async () => {
112
+ await withTempDir(async (dir) => {
113
+ const missing = join(dir, 'not-created');
114
+ const missingResult = checkRunnerWorkingDirectory(missing);
115
+ assert.equal(missingResult.valid, false);
116
+ assert.equal(missingResult.valid === false && missingResult.code, 'DIRECTORY_NOT_FOUND');
117
+ assert.equal(existsSync(missing), false);
118
+ const emptyDir = join(dir, 'empty');
119
+ await mkdir(emptyDir);
120
+ const emptyResult = checkRunnerWorkingDirectory(emptyDir);
121
+ assert.equal(emptyResult.valid, false);
122
+ assert.equal(emptyResult.valid === false && emptyResult.code, 'NOT_A_PROJECT_DIRECTORY');
123
+ const markerDir = join(dir, 'marker');
124
+ await mkdir(join(markerDir, '.agentteams'), { recursive: true });
125
+ await writeFile(join(markerDir, '.agentteams', 'config.json'), '{}\n', 'utf8');
126
+ assert.deepEqual(checkRunnerWorkingDirectory(markerDir), { valid: true });
127
+ const otherProjectDir = join(dir, 'other-project');
128
+ await mkdir(join(otherProjectDir, '.agentteams'), { recursive: true });
129
+ await writeFile(join(otherProjectDir, '.agentteams', 'config.json'), `${JSON.stringify({ projectId: 'project-b' })}\n`, 'utf8');
130
+ const mismatchResult = checkRunnerWorkingDirectory(otherProjectDir, { expectedProjectId: 'project-a' });
131
+ assert.equal(mismatchResult.valid, false);
132
+ assert.equal(mismatchResult.valid === false && mismatchResult.code, 'PROJECT_MISMATCH');
133
+ assert.deepEqual(checkRunnerWorkingDirectory(otherProjectDir, { expectedProjectId: 'project-b' }), {
134
+ valid: true,
135
+ });
136
+ const repoDir = join(dir, 'repo');
137
+ await mkdir(repoDir);
138
+ execFileSync('git', ['init'], { cwd: repoDir, stdio: 'ignore' });
139
+ assert.deepEqual(checkRunnerWorkingDirectory(repoDir), { valid: true });
140
+ const worktreeParent = join(repoDir, 'nested');
141
+ await mkdir(worktreeParent);
142
+ assert.deepEqual(checkRunnerWorkingDirectory(worktreeParent), { valid: true });
143
+ });
144
+ });
145
+ //# sourceMappingURL=working-directory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working-directory.test.js","sourceRoot":"","sources":["../../src/utils/working-directory.test.ts"],"names":[],"mappings":"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"}