@agents-ensemble/core 0.4.0 → 0.5.0

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 (119) hide show
  1. package/dist/acp/acp-preset-bins.d.ts +10 -0
  2. package/dist/acp/acp-preset-bins.d.ts.map +1 -0
  3. package/dist/acp/acp-preset-bins.js +27 -0
  4. package/dist/acp/acp-preset-bins.js.map +1 -0
  5. package/dist/acp/index.d.ts +3 -0
  6. package/dist/acp/index.d.ts.map +1 -1
  7. package/dist/acp/index.js +3 -0
  8. package/dist/acp/index.js.map +1 -1
  9. package/dist/acp/resolve-acp-spawn.d.ts +2 -0
  10. package/dist/acp/resolve-acp-spawn.d.ts.map +1 -1
  11. package/dist/acp/resolve-acp-spawn.js +10 -6
  12. package/dist/acp/resolve-acp-spawn.js.map +1 -1
  13. package/dist/acp/resolve-bundled-acp-bin.d.ts +11 -0
  14. package/dist/acp/resolve-bundled-acp-bin.d.ts.map +1 -0
  15. package/dist/acp/resolve-bundled-acp-bin.js +60 -0
  16. package/dist/acp/resolve-bundled-acp-bin.js.map +1 -0
  17. package/dist/acp/validate-acp-preset-prerequisites.d.ts +24 -0
  18. package/dist/acp/validate-acp-preset-prerequisites.d.ts.map +1 -0
  19. package/dist/acp/validate-acp-preset-prerequisites.js +121 -0
  20. package/dist/acp/validate-acp-preset-prerequisites.js.map +1 -0
  21. package/dist/conductor/conductor-session-driver.d.ts +2 -0
  22. package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
  23. package/dist/conductor/conductor-session-driver.js +16 -7
  24. package/dist/conductor/conductor-session-driver.js.map +1 -1
  25. package/dist/conductor/conductor-session.d.ts +3 -0
  26. package/dist/conductor/conductor-session.d.ts.map +1 -1
  27. package/dist/conductor/conductor-session.js +149 -62
  28. package/dist/conductor/conductor-session.js.map +1 -1
  29. package/dist/conductor/resolve-conductor-model-id.d.ts +7 -3
  30. package/dist/conductor/resolve-conductor-model-id.d.ts.map +1 -1
  31. package/dist/conductor/resolve-conductor-model-id.js +9 -11
  32. package/dist/conductor/resolve-conductor-model-id.js.map +1 -1
  33. package/dist/conductor/session/events/session-log-event-groups.d.ts +2 -2
  34. package/dist/conductor/session/events/session-log-event-groups.d.ts.map +1 -1
  35. package/dist/conductor/session/events/session-log-event-groups.js +1 -0
  36. package/dist/conductor/session/events/session-log-event-groups.js.map +1 -1
  37. package/dist/conductor/session/events/session-log-event.d.ts +9 -1
  38. package/dist/conductor/session/events/session-log-event.d.ts.map +1 -1
  39. package/dist/conductor/session/session-logger.d.ts.map +1 -1
  40. package/dist/conductor/session/session-logger.js +1 -0
  41. package/dist/conductor/session/session-logger.js.map +1 -1
  42. package/dist/config/deep-merge.d.ts +3 -0
  43. package/dist/config/deep-merge.d.ts.map +1 -0
  44. package/dist/config/deep-merge.js +20 -0
  45. package/dist/config/deep-merge.js.map +1 -0
  46. package/dist/config/defaults.d.ts +5 -0
  47. package/dist/config/defaults.d.ts.map +1 -0
  48. package/dist/config/defaults.js +35 -0
  49. package/dist/config/defaults.js.map +1 -0
  50. package/dist/config/index.d.ts +9 -0
  51. package/dist/config/index.d.ts.map +1 -0
  52. package/dist/config/index.js +6 -0
  53. package/dist/config/index.js.map +1 -0
  54. package/dist/config/load-ensemble-config.d.ts +12 -0
  55. package/dist/config/load-ensemble-config.d.ts.map +1 -0
  56. package/dist/config/load-ensemble-config.js +44 -0
  57. package/dist/config/load-ensemble-config.js.map +1 -0
  58. package/dist/config/parse-config.d.ts +7 -0
  59. package/dist/config/parse-config.d.ts.map +1 -0
  60. package/dist/config/parse-config.js +179 -0
  61. package/dist/config/parse-config.js.map +1 -0
  62. package/dist/config/resolve-settings.d.ts +78 -0
  63. package/dist/config/resolve-settings.d.ts.map +1 -0
  64. package/dist/config/resolve-settings.js +141 -0
  65. package/dist/config/resolve-settings.js.map +1 -0
  66. package/dist/config/types.d.ts +52 -0
  67. package/dist/config/types.d.ts.map +1 -0
  68. package/dist/config/types.js +2 -0
  69. package/dist/config/types.js.map +1 -0
  70. package/dist/github/fetch-github-updates.d.ts +17 -3
  71. package/dist/github/fetch-github-updates.d.ts.map +1 -1
  72. package/dist/github/fetch-github-updates.js +97 -97
  73. package/dist/github/fetch-github-updates.js.map +1 -1
  74. package/dist/github/github-auth.d.ts +15 -0
  75. package/dist/github/github-auth.d.ts.map +1 -0
  76. package/dist/github/github-auth.js +44 -0
  77. package/dist/github/github-auth.js.map +1 -0
  78. package/dist/github/github-client.d.ts +76 -0
  79. package/dist/github/github-client.d.ts.map +1 -0
  80. package/dist/github/github-client.js +198 -0
  81. package/dist/github/github-client.js.map +1 -0
  82. package/dist/github/github-monitor-error.d.ts +24 -0
  83. package/dist/github/github-monitor-error.d.ts.map +1 -0
  84. package/dist/github/github-monitor-error.js +75 -0
  85. package/dist/github/github-monitor-error.js.map +1 -0
  86. package/dist/github/github-monitor.d.ts +9 -3
  87. package/dist/github/github-monitor.d.ts.map +1 -1
  88. package/dist/github/github-monitor.js +41 -3
  89. package/dist/github/github-monitor.js.map +1 -1
  90. package/dist/github/github-test-fixtures.d.ts +52 -0
  91. package/dist/github/github-test-fixtures.d.ts.map +1 -1
  92. package/dist/github/github-test-fixtures.js +42 -0
  93. package/dist/github/github-test-fixtures.js.map +1 -1
  94. package/dist/github/index.d.ts +11 -2
  95. package/dist/github/index.d.ts.map +1 -1
  96. package/dist/github/index.js +6 -2
  97. package/dist/github/index.js.map +1 -1
  98. package/dist/github/issue-context.d.ts +8 -1
  99. package/dist/github/issue-context.d.ts.map +1 -1
  100. package/dist/github/issue-context.js +13 -12
  101. package/dist/github/issue-context.js.map +1 -1
  102. package/dist/github/resolve-github-auth-token.d.ts +19 -0
  103. package/dist/github/resolve-github-auth-token.d.ts.map +1 -0
  104. package/dist/github/resolve-github-auth-token.js +32 -0
  105. package/dist/github/resolve-github-auth-token.js.map +1 -0
  106. package/dist/github/run-gh.d.ts +24 -2
  107. package/dist/github/run-gh.d.ts.map +1 -1
  108. package/dist/github/run-gh.js +62 -9
  109. package/dist/github/run-gh.js.map +1 -1
  110. package/dist/index.d.ts +1 -0
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +1 -0
  113. package/dist/index.js.map +1 -1
  114. package/dist/profile/load-profile.d.ts +5 -2
  115. package/dist/profile/load-profile.d.ts.map +1 -1
  116. package/dist/profile/load-profile.js +9 -7
  117. package/dist/profile/load-profile.js.map +1 -1
  118. package/dist/profiles/implementer-and-reviewer/team.md +11 -3
  119. package/package.json +6 -1
@@ -0,0 +1,20 @@
1
+ function isPlainObject(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ /** プレーンオブジェクトを再帰的にマージする。override が user / project 層。 */
5
+ export function deepMerge(base, override) {
6
+ const result = { ...base };
7
+ for (const [key, value] of Object.entries(override)) {
8
+ if (value === undefined) {
9
+ continue;
10
+ }
11
+ const existing = result[key];
12
+ if (isPlainObject(existing) && isPlainObject(value)) {
13
+ result[key] = deepMerge(existing, value);
14
+ continue;
15
+ }
16
+ result[key] = value;
17
+ }
18
+ return result;
19
+ }
20
+ //# sourceMappingURL=deep-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../../src/config/deep-merge.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,SAAS,CACvB,IAAO,EACP,QAAiC;IAEjC,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IAEpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,MAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EnsembleConfig } from './types.js';
2
+ /** `packages/cli` の `NON_INTERACTIVE_DEFAULT_MAX_TURNS` と同期。 */
3
+ export declare const DEFAULT_SESSION_MAX_TURNS_NON_TTY = 5;
4
+ export declare const DEFAULT_ENSEMBLE_CONFIG: EnsembleConfig;
5
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,eAAO,MAAM,uBAAuB,EAAE,cA8BrC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS, DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS, DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS, DEFAULT_GITHUB_MONITOR_STOP_POLL_WAIT_MS, } from '../github/github-monitor.js';
2
+ /** `packages/cli` の `NON_INTERACTIVE_DEFAULT_MAX_TURNS` と同期。 */
3
+ export const DEFAULT_SESSION_MAX_TURNS_NON_TTY = 5;
4
+ export const DEFAULT_ENSEMBLE_CONFIG = {
5
+ profile: {},
6
+ conductor: {
7
+ model: 'default',
8
+ },
9
+ acp: {
10
+ defaultPreset: 'cursor',
11
+ },
12
+ session: {
13
+ worktree: 'isolated',
14
+ maxTurns: {
15
+ tty: 0,
16
+ nonTty: DEFAULT_SESSION_MAX_TURNS_NON_TTY,
17
+ },
18
+ postLoop: {
19
+ wait: true,
20
+ },
21
+ },
22
+ github: {
23
+ auth: {
24
+ allowGhAuthTokenFallback: true,
25
+ },
26
+ monitor: {
27
+ enabled: true,
28
+ debounceMs: DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS,
29
+ pollIntervalMs: DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS,
30
+ activePollIntervalMs: DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS,
31
+ stopPollWaitMs: DEFAULT_GITHUB_MONITOR_STOP_POLL_WAIT_MS,
32
+ },
33
+ },
34
+ };
35
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8CAA8C,EAC9C,kCAAkC,EAClC,uCAAuC,EACvC,wCAAwC,GACzC,MAAM,6BAA6B,CAAC;AAGrC,gEAAgE;AAChE,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,OAAO,EAAE,EAAE;IACX,SAAS,EAAE;QACT,KAAK,EAAE,SAAS;KACjB;IACD,GAAG,EAAE;QACH,aAAa,EAAE,QAAQ;KACxB;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,iCAAiC;SAC1C;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI;SACX;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,wBAAwB,EAAE,IAAI;SAC/B;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kCAAkC;YAC9C,cAAc,EAAE,uCAAuC;YACvD,oBAAoB,EAAE,8CAA8C;YACpE,cAAc,EAAE,wCAAwC;SACzD;KACF;CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { DEFAULT_ENSEMBLE_CONFIG, DEFAULT_SESSION_MAX_TURNS_NON_TTY } from './defaults.js';
2
+ export { deepMerge } from './deep-merge.js';
3
+ export { ENSEMBLE_CONFIG_FILE, loadEnsembleConfig, } from './load-ensemble-config.js';
4
+ export type { LoadEnsembleConfigOptions } from './load-ensemble-config.js';
5
+ export { parseEnsembleConfig } from './parse-config.js';
6
+ export { resolveBooleanSetting, resolveConductorModelSetting, resolveDefaultAcpPresetSetting, CONDUCTOR_MODEL_ID_ENV, ENSEMBLE_DEFAULT_PROFILE_ENV, resolveGitHubMonitorActivePollIntervalMs, resolveGitHubMonitorDebounceMs, resolveGitHubMonitorEnabled, resolveGitHubMonitorPollIntervalMs, resolveGitHubMonitorStopPollWaitMs, resolveNumberSetting, resolveProfileDefaultRef, resolveSessionMaxTurns, resolveSessionPostLoopWait, resolveSessionWorktreeMode, resolveStringSetting, } from './resolve-settings.js';
7
+ export type { ResolveBooleanSettingOptions, ResolveNumberSettingOptions, ResolveStringSettingOptions, } from './resolve-settings.js';
8
+ export type { EnsembleAcpConfig, EnsembleConductorConfig, EnsembleConfig, EnsembleGitHubAuthConfig, EnsembleGitHubConfig, EnsembleGitHubMonitorConfig, EnsembleProfileConfig, EnsembleSessionConfig, EnsembleSessionMaxTurnsConfig, EnsembleSessionPostLoopConfig, } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,8BAA8B,EAC9B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,8BAA8B,EAC9B,2BAA2B,EAC3B,kCAAkC,EAClC,kCAAkC,EAClC,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { DEFAULT_ENSEMBLE_CONFIG, DEFAULT_SESSION_MAX_TURNS_NON_TTY } from './defaults.js';
2
+ export { deepMerge } from './deep-merge.js';
3
+ export { ENSEMBLE_CONFIG_FILE, loadEnsembleConfig, } from './load-ensemble-config.js';
4
+ export { parseEnsembleConfig } from './parse-config.js';
5
+ export { resolveBooleanSetting, resolveConductorModelSetting, resolveDefaultAcpPresetSetting, CONDUCTOR_MODEL_ID_ENV, ENSEMBLE_DEFAULT_PROFILE_ENV, resolveGitHubMonitorActivePollIntervalMs, resolveGitHubMonitorDebounceMs, resolveGitHubMonitorEnabled, resolveGitHubMonitorPollIntervalMs, resolveGitHubMonitorStopPollWaitMs, resolveNumberSetting, resolveProfileDefaultRef, resolveSessionMaxTurns, resolveSessionPostLoopWait, resolveSessionWorktreeMode, resolveStringSetting, } from './resolve-settings.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,8BAA8B,EAC9B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,8BAA8B,EAC9B,2BAA2B,EAC3B,kCAAkC,EAClC,kCAAkC,EAClC,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { EnsembleConfig } from './types.js';
2
+ export declare const ENSEMBLE_CONFIG_FILE = "config.yaml";
3
+ export interface LoadEnsembleConfigOptions {
4
+ /** テスト用。既定は `~/.ensemble`。 */
5
+ userEnsembleRoot?: string;
6
+ }
7
+ /**
8
+ * user → project の順で deep merge し、コード内デフォルトをベースに解決する。
9
+ * どちらのファイルも無い場合は {@link DEFAULT_ENSEMBLE_CONFIG} を返す。
10
+ */
11
+ export declare function loadEnsembleConfig(repoRoot: string, options?: LoadEnsembleConfigOptions): Promise<EnsembleConfig>;
12
+ //# sourceMappingURL=load-ensemble-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-ensemble-config.d.ts","sourceRoot":"","sources":["../../src/config/load-ensemble-config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA6BD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAczB"}
@@ -0,0 +1,44 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import yaml from 'js-yaml';
6
+ import { ENSEMBLE_DIR } from '../profile/profile-paths.js';
7
+ import { deepMerge } from './deep-merge.js';
8
+ import { DEFAULT_ENSEMBLE_CONFIG } from './defaults.js';
9
+ import { parseEnsembleConfig } from './parse-config.js';
10
+ export const ENSEMBLE_CONFIG_FILE = 'config.yaml';
11
+ function userConfigPath(options) {
12
+ const root = options.userEnsembleRoot ?? join(homedir(), ENSEMBLE_DIR);
13
+ return join(root, ENSEMBLE_CONFIG_FILE);
14
+ }
15
+ function projectConfigPath(repoRoot) {
16
+ return join(repoRoot, ENSEMBLE_DIR, ENSEMBLE_CONFIG_FILE);
17
+ }
18
+ async function readConfigYaml(path) {
19
+ if (!existsSync(path)) {
20
+ return undefined;
21
+ }
22
+ const raw = await readFile(path, 'utf8');
23
+ return yaml.load(raw);
24
+ }
25
+ function mergeConfigLayer(base, layer) {
26
+ return deepMerge(base, layer);
27
+ }
28
+ /**
29
+ * user → project の順で deep merge し、コード内デフォルトをベースに解決する。
30
+ * どちらのファイルも無い場合は {@link DEFAULT_ENSEMBLE_CONFIG} を返す。
31
+ */
32
+ export async function loadEnsembleConfig(repoRoot, options = {}) {
33
+ let merged = structuredClone(DEFAULT_ENSEMBLE_CONFIG);
34
+ const userRaw = await readConfigYaml(userConfigPath(options));
35
+ if (userRaw !== undefined) {
36
+ merged = mergeConfigLayer(merged, parseEnsembleConfig(userRaw));
37
+ }
38
+ const projectRaw = await readConfigYaml(projectConfigPath(repoRoot));
39
+ if (projectRaw !== undefined) {
40
+ merged = mergeConfigLayer(merged, parseEnsembleConfig(projectRaw));
41
+ }
42
+ return merged;
43
+ }
44
+ //# sourceMappingURL=load-ensemble-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-ensemble-config.js","sourceRoot":"","sources":["../../src/config/load-ensemble-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAOlD,SAAS,cAAc,CAAC,OAAkC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAoB,EACpB,KAA8B;IAE9B,OAAO,SAAS,CACd,IAA0C,EAC1C,KAA2C,CACf,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,UAAqC,EAAE;IAEvC,IAAI,MAAM,GAAmB,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { EnsembleConfig } from './types.js';
2
+ /**
3
+ * YAML から既知スキーマのみ抽出する。未知キーは無視(将来拡張用)。
4
+ * 無効な型の既知キーは無視し、下位層 / デフォルトにフォールバックする。
5
+ */
6
+ export declare function parseEnsembleConfig(raw: unknown): Partial<EnsembleConfig>;
7
+ //# sourceMappingURL=parse-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../src/config/parse-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,cAAc,EAQf,MAAM,YAAY,CAAC;AAmKpB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAkCzE"}
@@ -0,0 +1,179 @@
1
+ import { isBuiltinAcpPresetId, } from '../acp/resolve-acp-spawn.js';
2
+ function readBoolean(value) {
3
+ return typeof value === 'boolean' ? value : undefined;
4
+ }
5
+ function readString(value) {
6
+ return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
7
+ }
8
+ function readNumber(value) {
9
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
10
+ }
11
+ function readObject(value) {
12
+ return value && typeof value === 'object' && !Array.isArray(value)
13
+ ? value
14
+ : undefined;
15
+ }
16
+ function parseWorktreeMode(value) {
17
+ const raw = readString(value);
18
+ if (!raw) {
19
+ return undefined;
20
+ }
21
+ const normalized = raw.toLowerCase().replace(/_/g, '-');
22
+ if (normalized === 'isolated') {
23
+ return 'isolated';
24
+ }
25
+ if (normalized === 'in-repo') {
26
+ return 'in_repo';
27
+ }
28
+ return undefined;
29
+ }
30
+ function parseProfileConfig(raw) {
31
+ const obj = readObject(raw);
32
+ if (!obj) {
33
+ return undefined;
34
+ }
35
+ const defaultProfile = readString(obj.default);
36
+ return defaultProfile ? { default: defaultProfile } : {};
37
+ }
38
+ function parseConductorConfig(raw) {
39
+ const obj = readObject(raw);
40
+ if (!obj) {
41
+ return undefined;
42
+ }
43
+ const model = readString(obj.model);
44
+ return model ? { model } : undefined;
45
+ }
46
+ function parseAcpConfig(raw) {
47
+ const obj = readObject(raw);
48
+ if (!obj) {
49
+ return undefined;
50
+ }
51
+ const preset = readString(obj.defaultPreset);
52
+ if (!preset || !isBuiltinAcpPresetId(preset)) {
53
+ return undefined;
54
+ }
55
+ return { defaultPreset: preset };
56
+ }
57
+ function parseSessionMaxTurns(raw) {
58
+ const obj = readObject(raw);
59
+ if (!obj) {
60
+ return undefined;
61
+ }
62
+ const tty = readNumber(obj.tty);
63
+ const nonTty = readNumber(obj.nonTty);
64
+ if (tty === undefined && nonTty === undefined) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ ...(tty !== undefined ? { tty } : {}),
69
+ ...(nonTty !== undefined ? { nonTty } : {}),
70
+ };
71
+ }
72
+ function parseSessionPostLoop(raw) {
73
+ const obj = readObject(raw);
74
+ if (!obj) {
75
+ return undefined;
76
+ }
77
+ const wait = readBoolean(obj.wait);
78
+ return wait === undefined ? undefined : { wait };
79
+ }
80
+ function parseSessionConfig(raw) {
81
+ const obj = readObject(raw);
82
+ if (!obj) {
83
+ return undefined;
84
+ }
85
+ const worktree = parseWorktreeMode(obj.worktree);
86
+ const maxTurns = parseSessionMaxTurns(obj.maxTurns);
87
+ const postLoop = parseSessionPostLoop(obj.postLoop);
88
+ if (worktree === undefined && maxTurns === undefined && postLoop === undefined) {
89
+ return undefined;
90
+ }
91
+ return {
92
+ ...(worktree !== undefined ? { worktree } : {}),
93
+ ...(maxTurns !== undefined ? { maxTurns } : {}),
94
+ ...(postLoop !== undefined ? { postLoop } : {}),
95
+ };
96
+ }
97
+ function parseGitHubAuthConfig(raw) {
98
+ const obj = readObject(raw);
99
+ if (!obj) {
100
+ return undefined;
101
+ }
102
+ const allowGhAuthTokenFallback = readBoolean(obj.allowGhAuthTokenFallback);
103
+ return allowGhAuthTokenFallback === undefined
104
+ ? undefined
105
+ : { allowGhAuthTokenFallback };
106
+ }
107
+ function parseGitHubMonitorConfig(raw) {
108
+ const obj = readObject(raw);
109
+ if (!obj) {
110
+ return undefined;
111
+ }
112
+ const enabled = readBoolean(obj.enabled);
113
+ const debounceMs = readNumber(obj.debounceMs);
114
+ const pollIntervalMs = readNumber(obj.pollIntervalMs);
115
+ const activePollIntervalMs = readNumber(obj.activePollIntervalMs);
116
+ const stopPollWaitMs = readNumber(obj.stopPollWaitMs);
117
+ if (enabled === undefined &&
118
+ debounceMs === undefined &&
119
+ pollIntervalMs === undefined &&
120
+ activePollIntervalMs === undefined &&
121
+ stopPollWaitMs === undefined) {
122
+ return undefined;
123
+ }
124
+ return {
125
+ ...(enabled !== undefined ? { enabled } : {}),
126
+ ...(debounceMs !== undefined ? { debounceMs } : {}),
127
+ ...(pollIntervalMs !== undefined ? { pollIntervalMs } : {}),
128
+ ...(activePollIntervalMs !== undefined ? { activePollIntervalMs } : {}),
129
+ ...(stopPollWaitMs !== undefined ? { stopPollWaitMs } : {}),
130
+ };
131
+ }
132
+ function parseGitHubConfig(raw) {
133
+ const obj = readObject(raw);
134
+ if (!obj) {
135
+ return undefined;
136
+ }
137
+ const auth = parseGitHubAuthConfig(obj.auth);
138
+ const monitor = parseGitHubMonitorConfig(obj.monitor);
139
+ if (auth === undefined && monitor === undefined) {
140
+ return undefined;
141
+ }
142
+ return {
143
+ ...(auth !== undefined ? { auth } : {}),
144
+ ...(monitor !== undefined ? { monitor } : {}),
145
+ };
146
+ }
147
+ /**
148
+ * YAML から既知スキーマのみ抽出する。未知キーは無視(将来拡張用)。
149
+ * 無効な型の既知キーは無視し、下位層 / デフォルトにフォールバックする。
150
+ */
151
+ export function parseEnsembleConfig(raw) {
152
+ if (!raw || typeof raw !== 'object') {
153
+ return {};
154
+ }
155
+ const root = raw;
156
+ const result = {};
157
+ const profile = parseProfileConfig(root.profile);
158
+ if (profile !== undefined) {
159
+ result.profile = profile;
160
+ }
161
+ const conductor = parseConductorConfig(root.conductor);
162
+ if (conductor !== undefined) {
163
+ result.conductor = conductor;
164
+ }
165
+ const acp = parseAcpConfig(root.acp);
166
+ if (acp !== undefined) {
167
+ result.acp = acp;
168
+ }
169
+ const session = parseSessionConfig(root.session);
170
+ if (session !== undefined) {
171
+ result.session = session;
172
+ }
173
+ const github = parseGitHubConfig(root.github);
174
+ if (github !== undefined) {
175
+ result.github = github;
176
+ }
177
+ return result;
178
+ }
179
+ //# sourceMappingURL=parse-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../src/config/parse-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { WorkerWorktreeMode } from '../worktree/worktree.js';
2
+ import type { EnsembleConfig } from './types.js';
3
+ /** `--profile` 未指定時の team profile(`load-profile` と共有)。 */
4
+ export declare const ENSEMBLE_DEFAULT_PROFILE_ENV = "ENSEMBLE_DEFAULT_PROFILE";
5
+ /** conductor モデル id(`resolve-conductor-model-id` と共有)。 */
6
+ export declare const CONDUCTOR_MODEL_ID_ENV = "CONDUCTOR_MODEL_ID";
7
+ /** 解決順: CLI 明示 > env > config > コード内 default */
8
+ export interface ResolveStringSettingOptions {
9
+ cli?: string;
10
+ env?: string;
11
+ config?: string;
12
+ defaultValue?: string;
13
+ }
14
+ export interface ResolveBooleanSettingOptions {
15
+ cli?: boolean;
16
+ env?: boolean;
17
+ config?: boolean;
18
+ defaultValue: boolean;
19
+ }
20
+ export interface ResolveNumberSettingOptions {
21
+ cli?: number;
22
+ env?: number;
23
+ config?: number;
24
+ defaultValue: number;
25
+ }
26
+ export declare function resolveStringSetting(options: ResolveStringSettingOptions): string | undefined;
27
+ export declare function resolveBooleanSetting(options: ResolveBooleanSettingOptions): boolean;
28
+ export declare function resolveNumberSetting(options: ResolveNumberSettingOptions): number;
29
+ export declare function resolveProfileDefaultRef(options: {
30
+ cliProfile?: string;
31
+ env?: NodeJS.ProcessEnv;
32
+ config?: EnsembleConfig;
33
+ }): string | undefined;
34
+ export declare function resolveConductorModelSetting(options: {
35
+ cliModel?: string;
36
+ env?: NodeJS.ProcessEnv;
37
+ config?: EnsembleConfig;
38
+ }): string;
39
+ export declare function resolveDefaultAcpPresetSetting(options: {
40
+ cliPreset?: string;
41
+ env?: NodeJS.ProcessEnv;
42
+ config?: EnsembleConfig;
43
+ }): string | undefined;
44
+ export declare function resolveSessionWorktreeMode(options: {
45
+ cliWorktree?: string;
46
+ config?: EnsembleConfig;
47
+ }): WorkerWorktreeMode;
48
+ export declare function resolveSessionMaxTurns(options: {
49
+ interactive: boolean;
50
+ cliNoMaxTurns?: boolean;
51
+ cliMaxTurns?: number;
52
+ config?: EnsembleConfig;
53
+ }): number;
54
+ export declare function resolveSessionPostLoopWait(options: {
55
+ cliNoWait?: boolean;
56
+ config?: EnsembleConfig;
57
+ }): boolean;
58
+ export declare function resolveGitHubMonitorEnabled(options: {
59
+ cliDisabled?: boolean;
60
+ config?: EnsembleConfig;
61
+ }): boolean;
62
+ export declare function resolveGitHubMonitorDebounceMs(options: {
63
+ cliDebounceMs?: number;
64
+ config?: EnsembleConfig;
65
+ }): number;
66
+ export declare function resolveGitHubMonitorPollIntervalMs(options: {
67
+ cliPollIntervalMs?: number;
68
+ config?: EnsembleConfig;
69
+ }): number;
70
+ export declare function resolveGitHubMonitorActivePollIntervalMs(options: {
71
+ cliActivePollIntervalMs?: number;
72
+ config?: EnsembleConfig;
73
+ }): number;
74
+ export declare function resolveGitHubMonitorStopPollWaitMs(options: {
75
+ cliStopPollWaitMs?: number;
76
+ config?: EnsembleConfig;
77
+ }): number;
78
+ //# sourceMappingURL=resolve-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-settings.d.ts","sourceRoot":"","sources":["../../src/config/resolve-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { ENSEMBLE_DEFAULT_ACP_CLI_ENV } from '../acp/resolve-acp-spawn.js';
2
+ import { DEFAULT_ENSEMBLE_CONFIG } from './defaults.js';
3
+ /** `--profile` 未指定時の team profile(`load-profile` と共有)。 */
4
+ export const ENSEMBLE_DEFAULT_PROFILE_ENV = 'ENSEMBLE_DEFAULT_PROFILE';
5
+ /** conductor モデル id(`resolve-conductor-model-id` と共有)。 */
6
+ export const CONDUCTOR_MODEL_ID_ENV = 'CONDUCTOR_MODEL_ID';
7
+ function normalizeConductorModelId(modelId) {
8
+ return modelId === 'auto' ? 'default' : modelId;
9
+ }
10
+ function trimString(value) {
11
+ const trimmed = value?.trim();
12
+ return trimmed ? trimmed : undefined;
13
+ }
14
+ export function resolveStringSetting(options) {
15
+ const fromCli = trimString(options.cli);
16
+ if (fromCli !== undefined) {
17
+ return fromCli;
18
+ }
19
+ const fromEnv = trimString(options.env);
20
+ if (fromEnv !== undefined) {
21
+ return fromEnv;
22
+ }
23
+ const fromConfig = trimString(options.config);
24
+ if (fromConfig !== undefined) {
25
+ return fromConfig;
26
+ }
27
+ return options.defaultValue;
28
+ }
29
+ export function resolveBooleanSetting(options) {
30
+ if (options.cli !== undefined) {
31
+ return options.cli;
32
+ }
33
+ if (options.env !== undefined) {
34
+ return options.env;
35
+ }
36
+ if (options.config !== undefined) {
37
+ return options.config;
38
+ }
39
+ return options.defaultValue;
40
+ }
41
+ export function resolveNumberSetting(options) {
42
+ if (options.cli !== undefined) {
43
+ return options.cli;
44
+ }
45
+ if (options.env !== undefined) {
46
+ return options.env;
47
+ }
48
+ if (options.config !== undefined) {
49
+ return options.config;
50
+ }
51
+ return options.defaultValue;
52
+ }
53
+ export function resolveProfileDefaultRef(options) {
54
+ return resolveStringSetting({
55
+ cli: options.cliProfile,
56
+ env: options.env?.[ENSEMBLE_DEFAULT_PROFILE_ENV],
57
+ config: options.config?.profile.default,
58
+ });
59
+ }
60
+ export function resolveConductorModelSetting(options) {
61
+ const resolved = resolveStringSetting({
62
+ cli: options.cliModel,
63
+ env: options.env?.[CONDUCTOR_MODEL_ID_ENV],
64
+ config: options.config?.conductor.model,
65
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.conductor.model,
66
+ });
67
+ return normalizeConductorModelId(resolved ?? DEFAULT_ENSEMBLE_CONFIG.conductor.model);
68
+ }
69
+ export function resolveDefaultAcpPresetSetting(options) {
70
+ return resolveStringSetting({
71
+ cli: options.cliPreset,
72
+ env: options.env?.[ENSEMBLE_DEFAULT_ACP_CLI_ENV],
73
+ config: options.config?.acp.defaultPreset,
74
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.acp.defaultPreset,
75
+ });
76
+ }
77
+ export function resolveSessionWorktreeMode(options) {
78
+ const resolved = resolveStringSetting({
79
+ cli: options.cliWorktree,
80
+ config: options.config?.session.worktree,
81
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.session.worktree,
82
+ });
83
+ return (resolved ?? DEFAULT_ENSEMBLE_CONFIG.session.worktree);
84
+ }
85
+ export function resolveSessionMaxTurns(options) {
86
+ if (options.cliNoMaxTurns) {
87
+ return 0;
88
+ }
89
+ if (options.cliMaxTurns !== undefined) {
90
+ return options.cliMaxTurns;
91
+ }
92
+ const configMaxTurns = options.config?.session.maxTurns ?? DEFAULT_ENSEMBLE_CONFIG.session.maxTurns;
93
+ return options.interactive ? configMaxTurns.tty : configMaxTurns.nonTty;
94
+ }
95
+ export function resolveSessionPostLoopWait(options) {
96
+ if (options.cliNoWait) {
97
+ return false;
98
+ }
99
+ return resolveBooleanSetting({
100
+ config: options.config?.session.postLoop.wait,
101
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.session.postLoop.wait,
102
+ });
103
+ }
104
+ export function resolveGitHubMonitorEnabled(options) {
105
+ if (options.cliDisabled) {
106
+ return false;
107
+ }
108
+ return resolveBooleanSetting({
109
+ config: options.config?.github.monitor.enabled,
110
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.github.monitor.enabled,
111
+ });
112
+ }
113
+ export function resolveGitHubMonitorDebounceMs(options) {
114
+ return resolveNumberSetting({
115
+ cli: options.cliDebounceMs,
116
+ config: options.config?.github.monitor.debounceMs,
117
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.github.monitor.debounceMs,
118
+ });
119
+ }
120
+ export function resolveGitHubMonitorPollIntervalMs(options) {
121
+ return resolveNumberSetting({
122
+ cli: options.cliPollIntervalMs,
123
+ config: options.config?.github.monitor.pollIntervalMs,
124
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.github.monitor.pollIntervalMs,
125
+ });
126
+ }
127
+ export function resolveGitHubMonitorActivePollIntervalMs(options) {
128
+ return resolveNumberSetting({
129
+ cli: options.cliActivePollIntervalMs,
130
+ config: options.config?.github.monitor.activePollIntervalMs,
131
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.github.monitor.activePollIntervalMs,
132
+ });
133
+ }
134
+ export function resolveGitHubMonitorStopPollWaitMs(options) {
135
+ return resolveNumberSetting({
136
+ cli: options.cliStopPollWaitMs,
137
+ config: options.config?.github.monitor.stopPollWaitMs,
138
+ defaultValue: DEFAULT_ENSEMBLE_CONFIG.github.monitor.stopPollWaitMs,
139
+ });
140
+ }
141
+ //# sourceMappingURL=resolve-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-settings.js","sourceRoot":"","sources":["../../src/config/resolve-settings.ts"],"names":[],"mappings":"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"}