github-issue-tower-defence-management 1.193.0 → 1.194.1

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 (88) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +4 -0
  3. package/bin/adapter/entry-points/cli/index.js +19 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/console/ui-dist/assets/{index-RaFqjB7u.js → index-CYwLv9pf.js} +2 -2
  6. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  7. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js +1 -0
  8. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js.map +1 -1
  9. package/bin/adapter/repositories/NodeLocalCommandRunner.js +5 -0
  10. package/bin/adapter/repositories/NodeLocalCommandRunner.js.map +1 -1
  11. package/bin/adapter/repositories/NodeTmuxSessionRepository.js +29 -0
  12. package/bin/adapter/repositories/NodeTmuxSessionRepository.js.map +1 -1
  13. package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js +4 -2
  14. package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js.map +1 -1
  15. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +8 -3
  16. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  17. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +4 -2
  18. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
  19. package/bin/domain/usecases/StartPreparationUseCase.js +12 -2
  20. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  21. package/bin/domain/usecases/awaitingOwnerApprovalMessage.js +1 -1
  22. package/bin/domain/usecases/awaitingOwnerApprovalMessage.js.map +1 -1
  23. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +1 -3
  24. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  25. package/bin/domain/usecases/dashboard/GenerateTokenStatusUseCase.js +12 -4
  26. package/bin/domain/usecases/dashboard/GenerateTokenStatusUseCase.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/adapter/entry-points/cli/index.test.ts +102 -0
  29. package/src/adapter/entry-points/cli/index.ts +43 -0
  30. package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +45 -0
  31. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +7 -0
  32. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.stories.tsx +31 -0
  33. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.test.tsx +96 -0
  34. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.tsx +20 -2
  35. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +159 -0
  36. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +17 -1
  37. package/src/adapter/entry-points/console/ui-dist/assets/{index-RaFqjB7u.js → index-CYwLv9pf.js} +2 -2
  38. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  39. package/src/adapter/entry-points/handlers/inTmuxByHumanSessionReconciler.test.ts +1 -0
  40. package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.test.ts +1 -0
  41. package/src/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.test.ts +4 -1
  42. package/src/adapter/entry-points/handlers/situationFileWriter.test.ts +2 -0
  43. package/src/adapter/entry-points/handlers/staleTmuxSessionCleaner.test.ts +1 -0
  44. package/src/adapter/entry-points/handlers/tokenStatusWriter.ts +1 -0
  45. package/src/adapter/repositories/LocalCommandIssueAttachmentRepository.test.ts +4 -0
  46. package/src/adapter/repositories/LocalProcessLiveSessionProcessSnapshotProvider.test.ts +1 -0
  47. package/src/adapter/repositories/NodeLocalCommandRunner.test.ts +16 -0
  48. package/src/adapter/repositories/NodeLocalCommandRunner.ts +5 -1
  49. package/src/adapter/repositories/NodeSubAgentProcessLister.test.ts +1 -0
  50. package/src/adapter/repositories/NodeTmuxSessionRepository.test.ts +132 -0
  51. package/src/adapter/repositories/NodeTmuxSessionRepository.ts +37 -0
  52. package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.test.ts +38 -0
  53. package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts +6 -2
  54. package/src/adapter/repositories/TmuxSilentSessionNotificationRepository.test.ts +2 -0
  55. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +78 -4
  56. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +15 -3
  57. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +9 -2
  58. package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +10 -2
  59. package/src/domain/usecases/StartPreparationUseCase.test.ts +110 -2
  60. package/src/domain/usecases/StartPreparationUseCase.ts +34 -17
  61. package/src/domain/usecases/adapter-interfaces/LocalCommandRunner.ts +1 -0
  62. package/src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts +4 -0
  63. package/src/domain/usecases/awaitingOwnerApprovalMessage.ts +1 -1
  64. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +5 -4
  65. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +9 -11
  66. package/src/domain/usecases/dashboard/GenerateTokenStatusUseCase.test.ts +63 -0
  67. package/src/domain/usecases/dashboard/GenerateTokenStatusUseCase.ts +13 -4
  68. package/src/domain/usecases/intmux/InTmuxByHumanSessionReconcileUseCase.test.ts +1 -0
  69. package/src/domain/usecases/issueReactivationTriggerIsPending.test.ts +1 -0
  70. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  71. package/types/adapter/entry-points/handlers/tokenStatusWriter.d.ts.map +1 -1
  72. package/types/adapter/repositories/NodeLocalCommandRunner.d.ts +1 -0
  73. package/types/adapter/repositories/NodeLocalCommandRunner.d.ts.map +1 -1
  74. package/types/adapter/repositories/NodeTmuxSessionRepository.d.ts +1 -0
  75. package/types/adapter/repositories/NodeTmuxSessionRepository.d.ts.map +1 -1
  76. package/types/adapter/repositories/ProxyClaudeTokenUsageRepository.d.ts.map +1 -1
  77. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  78. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
  79. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
  80. package/types/domain/usecases/adapter-interfaces/LocalCommandRunner.d.ts +1 -0
  81. package/types/domain/usecases/adapter-interfaces/LocalCommandRunner.d.ts.map +1 -1
  82. package/types/domain/usecases/adapter-interfaces/TmuxSessionRepository.d.ts +1 -0
  83. package/types/domain/usecases/adapter-interfaces/TmuxSessionRepository.d.ts.map +1 -1
  84. package/types/domain/usecases/awaitingOwnerApprovalMessage.d.ts +1 -1
  85. package/types/domain/usecases/awaitingOwnerApprovalMessage.d.ts.map +1 -1
  86. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  87. package/types/domain/usecases/dashboard/GenerateTokenStatusUseCase.d.ts +1 -0
  88. package/types/domain/usecases/dashboard/GenerateTokenStatusUseCase.d.ts.map +1 -1
@@ -62,6 +62,12 @@ const createMockProject = (): Project => ({
62
62
  color: 'RED',
63
63
  description: '',
64
64
  },
65
+ {
66
+ id: '6',
67
+ name: 'Todo by human',
68
+ color: 'GREEN',
69
+ description: '',
70
+ },
65
71
  ],
66
72
  },
67
73
  nextActionDate: null,
@@ -164,6 +170,7 @@ describe('RevertOrphanedPreparationUseCase', () => {
164
170
  };
165
171
  mockLocalCommandRunner = {
166
172
  runCommand: jest.fn(),
173
+ spawnInteractive: jest.fn(),
167
174
  };
168
175
  useCase = new RevertOrphanedPreparationUseCase(
169
176
  mockProjectRepository,
@@ -2159,7 +2166,7 @@ describe('RevertOrphanedPreparationUseCase', () => {
2159
2166
  );
2160
2167
  });
2161
2168
 
2162
- it('should return orphaned issue to Awaiting Workspace with AWAITING_OWNER_APPROVAL when last report declares waitingForOwnerApproval', async () => {
2169
+ it('should move an orphaned issue to Todo by human with AWAITING_OWNER_APPROVAL when last report declares waitingForOwnerApproval', async () => {
2163
2170
  const stuckIssue = createMockIssue({
2164
2171
  url: 'https://github.com/user/repo/issues/10',
2165
2172
  status: 'Preparation',
@@ -2192,7 +2199,7 @@ describe('RevertOrphanedPreparationUseCase', () => {
2192
2199
  });
2193
2200
 
2194
2201
  expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(1);
2195
- expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('1');
2202
+ expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('6');
2196
2203
  expect(mockIssueCommentRepository.createComment.mock.calls).toHaveLength(1);
2197
2204
  expect(mockIssueCommentRepository.createComment.mock.calls[0][1]).toContain(
2198
2205
  'Auto Status Check: AWAITING_OWNER_APPROVAL',
@@ -13,6 +13,7 @@ import {
13
13
  AWAITING_WORKSPACE_STATUS_NAME,
14
14
  FAILED_PREPARATION_STATUS_NAME,
15
15
  PREPARATION_STATUS_NAME,
16
+ TODO_STATUS_NAME,
16
17
  } from '../entities/WorkflowStatus';
17
18
  import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
18
19
  import { isPullRequestDeclaredUnnecessary } from './isPullRequestDeclaredUnnecessary';
@@ -119,6 +120,10 @@ export class RevertOrphanedPreparationUseCase {
119
120
  (s) => s.name === FAILED_PREPARATION_STATUS_NAME,
120
121
  );
121
122
 
123
+ const todoStatusOption = project.status.statuses.find(
124
+ (s) => s.name === TODO_STATUS_NAME,
125
+ );
126
+
122
127
  for (const issue of preparationIssues) {
123
128
  const isOrphaned = await this.isOrphanedIssue(issue, params);
124
129
  if (!isOrphaned) {
@@ -211,11 +216,14 @@ export class RevertOrphanedPreparationUseCase {
211
216
  ) &&
212
217
  comment.content.startsWith(AWAITING_OWNER_APPROVAL_MESSAGE_HEAD),
213
218
  ).length;
214
- if (awaitingOwnerApprovalCount < ownerApprovalTimeoutCycles) {
219
+ if (
220
+ awaitingOwnerApprovalCount < ownerApprovalTimeoutCycles &&
221
+ todoStatusOption
222
+ ) {
215
223
  await this.issueRepository.updateStatus(
216
224
  project,
217
225
  issue,
218
- awaitingWorkspaceStatusOption.id,
226
+ todoStatusOption.id,
219
227
  );
220
228
  await this.issueCommentRepository.createComment(
221
229
  issue,
@@ -132,6 +132,7 @@ describe('StartPreparationUseCase', () => {
132
132
  };
133
133
  mockLocalCommandRunner = {
134
134
  runCommand: jest.fn(),
135
+ spawnInteractive: jest.fn(),
135
136
  };
136
137
  mockClaudeTokenUsageRepository = {
137
138
  ensureObservable: jest.fn().mockResolvedValue(undefined),
@@ -6891,6 +6892,112 @@ describe('StartPreparationUseCase', () => {
6891
6892
  expect(storyUnsetWarningCalls).toHaveLength(0);
6892
6893
  consoleWarnSpy.mockRestore();
6893
6894
  });
6895
+
6896
+ describe('token in-flight count refresh', () => {
6897
+ it('refreshes the token in-flight counts once before abandoning a run so a freed slot is used', async () => {
6898
+ const awaitingIssue = createMockIssue({
6899
+ url: 'url1',
6900
+ title: 'Issue 1',
6901
+ labels: ['category:impl'],
6902
+ status: 'Awaiting Workspace',
6903
+ number: 1,
6904
+ itemId: 'item-1',
6905
+ });
6906
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
6907
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
6908
+ createMockStoryObjectMap([awaitingIssue]),
6909
+ );
6910
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
6911
+ stdout: '',
6912
+ stderr: '',
6913
+ exitCode: 0,
6914
+ });
6915
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
6916
+ {
6917
+ name: 'token-a',
6918
+ token: 'token-a',
6919
+ fiveHourUtilization: 0.1,
6920
+ sevenDayUtilization: 0.1,
6921
+ blocked: false,
6922
+ rejected: false,
6923
+ fiveHourRejected: false,
6924
+ blockedUntilEpoch: 0,
6925
+ modelWeeklyLimits: {},
6926
+ },
6927
+ ]);
6928
+ mockClaudeTokenUsageRepository.getTokenInFlightCounts
6929
+ .mockResolvedValueOnce({ 'token-a': 6 })
6930
+ .mockResolvedValueOnce({ 'token-a': 0 });
6931
+
6932
+ await useCase.run({
6933
+ projectUrl: 'https://github.com/user/repo',
6934
+ defaultAgentName: 'agent1',
6935
+ defaultLlmModelName: 'claude-opus',
6936
+ fallbackLlmModelName: null,
6937
+ defaultLlmAgentName: null,
6938
+ configFilePath: '/path/to/config.yml',
6939
+ maximumPreparingIssuesCount: null,
6940
+ utilizationPercentageThreshold: 90,
6941
+ allowedIssueAuthors: ['testuser'],
6942
+ manager: 'manager-user',
6943
+ codexHomeCandidates: null,
6944
+ labelsAsLlmAgentName: null,
6945
+ });
6946
+
6947
+ expect(
6948
+ mockClaudeTokenUsageRepository.getTokenInFlightCounts.mock.calls,
6949
+ ).toHaveLength(2);
6950
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
6951
+ });
6952
+
6953
+ it('abandons the run when the refreshed in-flight counts still leave no token slot', async () => {
6954
+ const awaitingIssue = createMockIssue({
6955
+ url: 'url1',
6956
+ title: 'Issue 1',
6957
+ labels: ['category:impl'],
6958
+ status: 'Awaiting Workspace',
6959
+ number: 1,
6960
+ itemId: 'item-1',
6961
+ });
6962
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
6963
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
6964
+ createMockStoryObjectMap([awaitingIssue]),
6965
+ );
6966
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
6967
+ {
6968
+ name: 'token-a',
6969
+ token: 'token-a',
6970
+ fiveHourUtilization: 0.1,
6971
+ sevenDayUtilization: 0.1,
6972
+ blocked: false,
6973
+ rejected: false,
6974
+ fiveHourRejected: false,
6975
+ blockedUntilEpoch: 0,
6976
+ modelWeeklyLimits: {},
6977
+ },
6978
+ ]);
6979
+ mockClaudeTokenUsageRepository.getTokenInFlightCounts.mockResolvedValue({
6980
+ 'token-a': 6,
6981
+ });
6982
+
6983
+ await useCase.run({
6984
+ projectUrl: 'https://github.com/user/repo',
6985
+ defaultAgentName: 'agent1',
6986
+ defaultLlmModelName: 'claude-opus',
6987
+ fallbackLlmModelName: null,
6988
+ defaultLlmAgentName: null,
6989
+ configFilePath: '/path/to/config.yml',
6990
+ maximumPreparingIssuesCount: null,
6991
+ utilizationPercentageThreshold: 90,
6992
+ allowedIssueAuthors: ['testuser'],
6993
+ manager: 'manager-user',
6994
+ codexHomeCandidates: null,
6995
+ labelsAsLlmAgentName: null,
6996
+ });
6997
+
6998
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
6999
+ });
7000
+ });
6894
7001
  });
6895
7002
 
6896
7003
  describe('StartPreparationUseCase.buildRotationOrder', () => {
@@ -6929,6 +7036,7 @@ describe('StartPreparationUseCase.buildRotationOrder', () => {
6929
7036
  };
6930
7037
  const mockLocalCommandRunnerForRotation: Mocked<LocalCommandRunner> = {
6931
7038
  runCommand: jest.fn(),
7039
+ spawnInteractive: jest.fn(),
6932
7040
  };
6933
7041
  const mockClaudeTokenUsageRepositoryForRotation: Mocked<ClaudeTokenUsageRepository> =
6934
7042
  {
@@ -7235,7 +7343,7 @@ describe('StartPreparationUseCase.getTokenConcurrentLimit', () => {
7235
7343
  setIssueAgentField: jest.fn(),
7236
7344
  removeLabel: jest.fn(),
7237
7345
  },
7238
- { runCommand: jest.fn() },
7346
+ { runCommand: jest.fn(), spawnInteractive: jest.fn() },
7239
7347
  {
7240
7348
  ensureObservable: jest.fn(),
7241
7349
  getAvailableTokenUsages: jest.fn(),
@@ -7326,7 +7434,7 @@ describe('StartPreparationUseCase.fetchSpawnCandidateBranchSources', () => {
7326
7434
  removeLabel: jest.fn(),
7327
7435
  ...issueRepositoryOverrides,
7328
7436
  },
7329
- { runCommand: jest.fn() },
7437
+ { runCommand: jest.fn(), spawnInteractive: jest.fn() },
7330
7438
  {
7331
7439
  ensureObservable: jest.fn(),
7332
7440
  getAvailableTokenUsages: jest.fn(),
@@ -517,6 +517,7 @@ export class StartPreparationUseCase {
517
517
  let updatedCurrentPreparationIssueCount = currentPreparationIssueCount;
518
518
  let startedInThisRunCount = 0;
519
519
  const spawnedInThisRunByToken: Record<string, number> = {};
520
+ let tokenInFlightCountsRefreshed = false;
520
521
  const exclusionCounts = {
521
522
  dependedIssueUrls: 0,
522
523
  futureNextActionDate: 0,
@@ -730,23 +731,39 @@ export class StartPreparationUseCase {
730
731
  let routedModelName: string | null = null;
731
732
  let selectedTokenName: string | null = null;
732
733
  if (rotationTokens !== null && proxyBaseUrl !== null) {
733
- const tokenWithSoonestResetAmongAvailable = selectedTokensWithLimits
734
- .map((t) => ({
735
- token: t.token,
736
- model: t.model,
737
- remaining:
738
- t.limit -
739
- (tokenInFlightCounts[t.token] ?? 0) -
740
- (spawnedInThisRunByToken[t.token] ?? 0),
741
- secondsUntilSevenDayReset: t.secondsUntilSevenDayReset,
742
- }))
743
- .filter((t) => t.remaining > 0)
744
- .sort((a, b) => {
745
- if (a.secondsUntilSevenDayReset !== b.secondsUntilSevenDayReset) {
746
- return a.secondsUntilSevenDayReset - b.secondsUntilSevenDayReset;
747
- }
748
- return b.remaining - a.remaining;
749
- })[0];
734
+ const tokenWithSoonestResetAmongAvailableOf = ():
735
+ { token: string; model: string } | undefined =>
736
+ selectedTokensWithLimits
737
+ .map((t) => ({
738
+ token: t.token,
739
+ model: t.model,
740
+ remaining:
741
+ t.limit -
742
+ (tokenInFlightCounts[t.token] ?? 0) -
743
+ (spawnedInThisRunByToken[t.token] ?? 0),
744
+ secondsUntilSevenDayReset: t.secondsUntilSevenDayReset,
745
+ }))
746
+ .filter((t) => t.remaining > 0)
747
+ .sort((a, b) => {
748
+ if (a.secondsUntilSevenDayReset !== b.secondsUntilSevenDayReset) {
749
+ return (
750
+ a.secondsUntilSevenDayReset - b.secondsUntilSevenDayReset
751
+ );
752
+ }
753
+ return b.remaining - a.remaining;
754
+ })[0];
755
+ let tokenWithSoonestResetAmongAvailable =
756
+ tokenWithSoonestResetAmongAvailableOf();
757
+ if (
758
+ tokenWithSoonestResetAmongAvailable === undefined &&
759
+ !tokenInFlightCountsRefreshed
760
+ ) {
761
+ tokenInFlightCountsRefreshed = true;
762
+ tokenInFlightCounts =
763
+ await this.claudeTokenUsageRepository.getTokenInFlightCounts();
764
+ tokenWithSoonestResetAmongAvailable =
765
+ tokenWithSoonestResetAmongAvailableOf();
766
+ }
750
767
  if (tokenWithSoonestResetAmongAvailable === undefined) {
751
768
  await revertToAwaitingWorkspace(
752
769
  'every Claude OAuth token reached its concurrent worker limit',
@@ -12,4 +12,5 @@ export interface LocalCommandRunner {
12
12
  stderr: string;
13
13
  exitCode: number;
14
14
  }>;
15
+ spawnInteractive(program: string, args: string[]): void;
15
16
  }
@@ -13,4 +13,8 @@ export interface TmuxSessionRepository {
13
13
  killOwnSession: () => Promise<void>;
14
14
  sendKeys: (sessionName: string, literalText: string) => Promise<void>;
15
15
  launchBareNameLeaderSession: (name: string) => Promise<void>;
16
+ attachOrCreateInteractiveSession: (
17
+ issueUrl: string,
18
+ scopeLibPath: string | null,
19
+ ) => Promise<void>;
16
20
  }
@@ -2,4 +2,4 @@ export const AWAITING_OWNER_APPROVAL_MESSAGE_HEAD =
2
2
  'Auto Status Check: AWAITING_OWNER_APPROVAL';
3
3
 
4
4
  export const AWAITING_OWNER_APPROVAL_MESSAGE = `${AWAITING_OWNER_APPROVAL_MESSAGE_HEAD}
5
- The last report declared that this task is waiting for owner approval. Returning to Awaiting Workspace for the next cycle.`;
5
+ The last report declared that this task is waiting for owner approval. Moving it to Todo by human so that it waits in the owner's queue instead of being dispatched again.`;
@@ -800,19 +800,20 @@ describe('GenerateConsoleListsUseCase', () => {
800
800
  });
801
801
 
802
802
  describe('stories tab', () => {
803
- it('includes one entry per non-GRAY story option', () => {
803
+ it('includes one entry per story option including GRAY', () => {
804
804
  const result = run([]);
805
- expect(result.stories.stories).toHaveLength(2);
805
+ expect(result.stories.stories).toHaveLength(3);
806
806
  expect(result.stories.stories.map((s) => s.storyName)).toEqual([
807
+ 'regular / NO STORY; SET STORY FIELD',
807
808
  'Story Alpha',
808
809
  'Story Beta',
809
810
  ]);
810
811
  });
811
812
 
812
- it('excludes story options whose color is GRAY', () => {
813
+ it('includes story options whose color is GRAY', () => {
813
814
  const result = run([]);
814
815
  const names = result.stories.stories.map((s) => s.storyName);
815
- expect(names).not.toContain('regular / NO STORY; SET STORY FIELD');
816
+ expect(names).toContain('regular / NO STORY; SET STORY FIELD');
816
817
  });
817
818
 
818
819
  it('counts open items per story from all open issues on the board', () => {
@@ -173,17 +173,15 @@ export class GenerateConsoleListsUseCase {
173
173
  const defaultNameWithOwner =
174
174
  issues.find((issue) => issue.nameWithOwner !== '')?.nameWithOwner ?? null;
175
175
 
176
- const storyEntries: ConsoleStoryEntry[] = storyOptions
177
- .filter((option) => option.color !== 'GRAY')
178
- .map((option) => ({
179
- storyName: option.name,
180
- storyOptionId: option.id,
181
- color: option.color,
182
- openItemCount: openItemCountByStory.get(option.name) ?? 0,
183
- storyViewUrl: urlOfStoryView
184
- ? `${urlOfStoryView}?sliceBy%5Bvalue%5D=${encodeForURI(option.name)}`
185
- : null,
186
- }));
176
+ const storyEntries: ConsoleStoryEntry[] = storyOptions.map((option) => ({
177
+ storyName: option.name,
178
+ storyOptionId: option.id,
179
+ color: option.color,
180
+ openItemCount: openItemCountByStory.get(option.name) ?? 0,
181
+ storyViewUrl: urlOfStoryView
182
+ ? `${urlOfStoryView}?sliceBy%5Bvalue%5D=${encodeForURI(option.name)}`
183
+ : null,
184
+ }));
187
185
 
188
186
  return {
189
187
  'workflow-blocker': buildStatusTabFromSource(
@@ -111,6 +111,7 @@ const snapshot = (
111
111
  sevenDaySonnetRejected: false,
112
112
  sevenDayOpusRejected: false,
113
113
  hasWindowData: true,
114
+ lastUpdatedEpoch: 1_000_000,
114
115
  ...overrides,
115
116
  });
116
117
 
@@ -280,3 +281,65 @@ describe('computeSevenDayWindowAggregate', () => {
280
281
  expect(computeSevenDayWindowAggregate([])).toBeNull();
281
282
  });
282
283
  });
284
+
285
+ describe('GenerateTokenStatusUseCase window rollover inference', () => {
286
+ const usecase = new GenerateTokenStatusUseCase();
287
+ const now = 2_000_000;
288
+
289
+ const runFor = (
290
+ snapshotOverrides: Partial<TokenRateLimitSnapshot>,
291
+ ): TokenStatus =>
292
+ usecase.run({
293
+ tokens: [
294
+ {
295
+ name: 'alice',
296
+ token: 'token-a',
297
+ snapshot: snapshot(snapshotOverrides),
298
+ },
299
+ ],
300
+ prepCountByToken: new Map(),
301
+ humCountByToken: new Map(),
302
+ nowEpochSeconds: now,
303
+ })[0];
304
+
305
+ it('keeps the last observed utilization when the snapshot predates the reset it reports', () => {
306
+ const result = runFor({
307
+ sevenDayUtilization: 0.98,
308
+ sevenDayReset: now - 3600,
309
+ lastUpdatedEpoch: now - 72000,
310
+ });
311
+
312
+ expect(result.sevenDayUtilizationPercent).toBe(98);
313
+ });
314
+
315
+ it('keeps a seven day rejection visible when the snapshot predates the reset it reports', () => {
316
+ const result = runFor({
317
+ sevenDayUtilization: 0.98,
318
+ sevenDayReset: now - 3600,
319
+ sevenDayRejected: true,
320
+ lastUpdatedEpoch: now - 72000,
321
+ });
322
+
323
+ expect(result.color).toBe('K');
324
+ });
325
+
326
+ it('reports a rolled over window as unused when the snapshot was captured after that reset', () => {
327
+ const result = runFor({
328
+ sevenDayUtilization: 0.98,
329
+ sevenDayReset: now - 3600,
330
+ lastUpdatedEpoch: now - 1800,
331
+ });
332
+
333
+ expect(result.sevenDayUtilizationPercent).toBe(0);
334
+ });
335
+
336
+ it('keeps the last observed five hour utilization when the snapshot predates the five hour reset', () => {
337
+ const result = runFor({
338
+ fiveHourUtilization: 0.91,
339
+ fiveHourReset: now - 600,
340
+ lastUpdatedEpoch: now - 72000,
341
+ });
342
+
343
+ expect(result.fiveHourUtilizationPercent).toBe(91);
344
+ });
345
+ });
@@ -12,6 +12,7 @@ export type TokenRateLimitSnapshot = {
12
12
  sevenDaySonnetRejected: boolean;
13
13
  sevenDayOpusRejected: boolean;
14
14
  hasWindowData: boolean;
15
+ lastUpdatedEpoch: number;
15
16
  };
16
17
 
17
18
  export type TokenRateLimitDecision = {
@@ -154,9 +155,13 @@ export class GenerateTokenStatusUseCase {
154
155
  const sevenDayReset =
155
156
  snapshot.sevenDayReset > 0 ? snapshot.sevenDayReset : null;
156
157
  const fiveHourExpired =
157
- fiveHourReset !== null && fiveHourReset < nowEpochSeconds;
158
+ fiveHourReset !== null &&
159
+ fiveHourReset < nowEpochSeconds &&
160
+ snapshot.lastUpdatedEpoch >= fiveHourReset;
158
161
  const sevenDayExpired =
159
- sevenDayReset !== null && sevenDayReset < nowEpochSeconds;
162
+ sevenDayReset !== null &&
163
+ sevenDayReset < nowEpochSeconds &&
164
+ snapshot.lastUpdatedEpoch >= sevenDayReset;
160
165
  return {
161
166
  fiveHourUtilizationPercent: fiveHourExpired
162
167
  ? 0
@@ -196,9 +201,13 @@ export class GenerateTokenStatusUseCase {
196
201
  };
197
202
  }
198
203
  const fiveHourExpired =
199
- snapshot.fiveHourReset > 0 && snapshot.fiveHourReset < nowEpochSeconds;
204
+ snapshot.fiveHourReset > 0 &&
205
+ snapshot.fiveHourReset < nowEpochSeconds &&
206
+ snapshot.lastUpdatedEpoch >= snapshot.fiveHourReset;
200
207
  const sevenDayExpired =
201
- snapshot.sevenDayReset > 0 && snapshot.sevenDayReset < nowEpochSeconds;
208
+ snapshot.sevenDayReset > 0 &&
209
+ snapshot.sevenDayReset < nowEpochSeconds &&
210
+ snapshot.lastUpdatedEpoch >= snapshot.sevenDayReset;
202
211
  return {
203
212
  fiveHourUtilization: fiveHourExpired ? 0 : snapshot.fiveHourUtilization,
204
213
  sevenDayUtilization: sevenDayExpired ? 0 : snapshot.sevenDayUtilization,
@@ -76,6 +76,7 @@ const createFakeTmuxSessionRepository = (state: {
76
76
  killOwnSession: async () => undefined,
77
77
  sendKeys: async () => undefined,
78
78
  launchBareNameLeaderSession: async () => undefined,
79
+ attachOrCreateInteractiveSession: async () => undefined,
79
80
  };
80
81
  };
81
82
 
@@ -394,6 +394,7 @@ describe('spawn and finish sides agree on the reactivation trigger predicate', (
394
394
  runCommand: jest
395
395
  .fn()
396
396
  .mockResolvedValue({ stdout: '', stderr: '', exitCode: 0 }),
397
+ spawnInteractive: jest.fn(),
397
398
  };
398
399
  spawnMockClaudeTokenUsageRepository = {
399
400
  ensureObservable: jest.fn().mockResolvedValue(undefined),
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAwNzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AAsjCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAMd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA8OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA2kCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAMd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenStatusWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/tokenStatusWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAEL,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EAGZ,MAAM,+DAA+D,CAAC;AAGvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,gFAAgF,CAAC;AACpI,OAAO,EAAE,4BAA4B,EAAE,MAAM,0EAA0E,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,4BAA4B,CAAC;AAU9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAC3D,4BAA4B,CAAC,EAAE,kCAAkC,CAAC;IAClE,eAAe,CAAC,EAAE,4BAA4B,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,uBAAuB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA0EF,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,KACjC,sBAAsB,GAAG,IA0B3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,uBAAuB,KAAG,IAkHlE,CAAC"}
1
+ {"version":3,"file":"tokenStatusWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/tokenStatusWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAEL,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EAGZ,MAAM,+DAA+D,CAAC;AAGvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,gFAAgF,CAAC;AACpI,OAAO,EAAE,4BAA4B,EAAE,MAAM,0EAA0E,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,4BAA4B,CAAC;AAU9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAC3D,4BAA4B,CAAC,EAAE,kCAAkC,CAAC;IAClE,eAAe,CAAC,EAAE,4BAA4B,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,uBAAuB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA0EF,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,KACjC,sBAAsB,GAAG,IA2B3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,uBAAuB,KAAG,IAkHlE,CAAC"}
@@ -5,5 +5,6 @@ export declare class NodeLocalCommandRunner implements LocalCommandRunner {
5
5
  stderr: string;
6
6
  exitCode: number;
7
7
  }>;
8
+ spawnInteractive: (program: string, args: string[]) => void;
8
9
  }
9
10
  //# sourceMappingURL=NodeLocalCommandRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeLocalCommandRunner.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeLocalCommandRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,6DAA6D,CAAC;AAQrE,qBAAa,sBAAuB,YAAW,kBAAkB;IACzD,UAAU,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAyCH"}
1
+ {"version":3,"file":"NodeLocalCommandRunner.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeLocalCommandRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,6DAA6D,CAAC;AAQrE,qBAAa,sBAAuB,YAAW,kBAAkB;IACzD,UAAU,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IA0CF,gBAAgB,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,EAAE,KAAG,IAAI,CAExD;CACH"}
@@ -14,6 +14,7 @@ export declare class NodeTmuxSessionRepository implements TmuxSessionRepository
14
14
  killOwnSession: () => Promise<void>;
15
15
  private stopScopeUnit;
16
16
  sendKeys: (sessionName: string, literalText: string) => Promise<void>;
17
+ attachOrCreateInteractiveSession: (issueUrl: string, scopeLibPath: string | null) => Promise<void>;
17
18
  launchBareNameLeaderSession: (name: string) => Promise<void>;
18
19
  private sendEnter;
19
20
  private delaySubmit;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAWxE,qBAAa,yBAA0B,YAAW,qBAAqB;IAEnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAFvB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,GAAE,MAAgB,EAC/B,uBAAuB,GAAE,MAA0C;IAGtF,oBAAoB,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhD;IAEF,4BAA4B,QAAa,OAAO,CAAC,eAAe,EAAE,CAAC,CAkBjE;IAEF,kCAAkC,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAY9D;IAEF,qBAAqB,GACnB,aAAa,MAAM,EACnB,iBAAiB,MAAM,EACvB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAcd;IAEF,WAAW,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CActD;IAEF,cAAc,QAAa,OAAO,CAAC,IAAI,CAAC,CAatC;IAEF,OAAO,CAAC,aAAa,CAsBnB;IAEF,QAAQ,GACN,aAAa,MAAM,EACnB,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,CAiBd;IAEF,2BAA2B,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAc/D;IAEF,OAAO,CAAC,SAAS,CAcf;IAEF,OAAO,CAAC,WAAW,CAOjB;CACH"}
1
+ {"version":3,"file":"NodeTmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAWxE,qBAAa,yBAA0B,YAAW,qBAAqB;IAEnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAFvB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,GAAE,MAAgB,EAC/B,uBAAuB,GAAE,MAA0C;IAGtF,oBAAoB,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhD;IAEF,4BAA4B,QAAa,OAAO,CAAC,eAAe,EAAE,CAAC,CAkBjE;IAEF,kCAAkC,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAY9D;IAEF,qBAAqB,GACnB,aAAa,MAAM,EACnB,iBAAiB,MAAM,EACvB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAcd;IAEF,WAAW,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CActD;IAEF,cAAc,QAAa,OAAO,CAAC,IAAI,CAAC,CAatC;IAEF,OAAO,CAAC,aAAa,CAsBnB;IAEF,QAAQ,GACN,aAAa,MAAM,EACnB,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,CAiBd;IAEF,gCAAgC,GAC9B,UAAU,MAAM,EAChB,cAAc,MAAM,GAAG,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAgCd;IAEF,2BAA2B,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAc/D;IAEF,OAAO,CAAC,SAAS,CAcf;IAEF,OAAO,CAAC,WAAW,CAOjB;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyClaudeTokenUsageRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAOjH,qBAAa,+BAAgC,YAAW,0BAA0B;IAE9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,MAAmB;IAG5C,gBAAgB,QAAa,OAAO,CAAC,IAAI,CAAC,CAExC;IAEF,uBAAuB,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuF7D;IAEF,sBAAsB,QAAa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkChE;IAEF,OAAO,CAAC,0BAA0B,CAShC;IAEF,OAAO,CAAC,aAAa,CAYnB;IAEF,YAAY,QAAO,MAAM,CAAoC;CAC9D"}
1
+ {"version":3,"file":"ProxyClaudeTokenUsageRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAOjH,qBAAa,+BAAgC,YAAW,0BAA0B;IAE9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,MAAmB;IAG5C,gBAAgB,QAAa,OAAO,CAAC,IAAI,CAAC,CAExC;IAEF,uBAAuB,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2F7D;IAEF,sBAAsB,QAAa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkChE;IAEF,OAAO,CAAC,0BAA0B,CAShC;IAEF,OAAO,CAAC,aAAa,CAYnB;IAEF,YAAY,QAAO,MAAM,CAAoC;CAC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RevertOrphanedPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAyC7E,qBAAa,gCAAgC;IAEzC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB;IACD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB;IACD,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC;IACD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;gBArBtC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB,EACQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB,EACQ,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACQ,kBAAkB,EAAE,kBAAkB;IAGjD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,EAAE,MAAM,CAAC;QACvC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5C,KAAG,OAAO,CAAC,IAAI,CAAC,CA4Nf;IAEF,OAAO,CAAC,oBAAoB,CAqB1B;IAEF,OAAO,CAAC,eAAe,CAwGrB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,qBAAqB,CAyB3B;IAEF,OAAO,CAAC,eAAe,CA6BrB;IAEF,OAAO,CAAC,YAAY,CA+BlB;CACH"}
1
+ {"version":3,"file":"RevertOrphanedPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AA0C7E,qBAAa,gCAAgC;IAEzC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB;IACD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB;IACD,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC;IACD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;gBArBtC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB,EACQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB,EACQ,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACQ,kBAAkB,EAAE,kBAAkB;IAGjD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,EAAE,MAAM,CAAC;QACvC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5C,KAAG,OAAO,CAAC,IAAI,CAAC,CAmOf;IAEF,OAAO,CAAC,oBAAoB,CAqB1B;IAEF,OAAO,CAAC,eAAe,CAwGrB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,qBAAqB,CAyB3B;IAEF,OAAO,CAAC,eAAe,CA6BrB;IAEF,OAAO,CAAC,YAAY,CA+BlB;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAchE,eAAO,MAAM,+BAA+B,oBAAoB,CAAC;AAEjE,eAAO,MAAM,yCAAyC,IAAI,CAAC;AAE3D,MAAM,MAAM,6BAA6B,GACrC,mBAAmB,GACnB,sBAAsB,GACtB,0BAA0B,GAC1B,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,0BAA0B,GAAG;IACvC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,uBAAuB,EAAE,kBAAkB,EAAE,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,aAAa,MAAM,KAAG,MAGvC,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAahC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,4BAA4B;gBAnB5B,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAC/C,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,mBAAmB,GACnB,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,GACpB,oBAAoB,GACpB,aAAa,CAChB,EACgB,kBAAkB,EAAE,kBAAkB,EACtC,0BAA0B,EAAE,0BAA0B,EACtD,4BAA4B,EAAE,4BAA4B;IAG7E,OAAO,CAAC,uBAAuB,CAK7B;IAEF,OAAO,CAAC,gBAAgB,CAGgC;IAExD,OAAO,CAAC,0BAA0B,CAQhC;IAEF,OAAO,CAAC,mBAAmB,CAqBzB;IAEF,OAAO,CAAC,yBAAyB,CAc/B;IAEF,OAAO,CAAC,wCAAwC,CAqB9C;IAEF,OAAO,CAAC,sBAAsB,CAS5B;IAEF,uBAAuB,GACrB,qBAAqB,MAAM,EAC3B,qBAAqB,MAAM,EAC3B,kBAAkB,MAAM,KACvB,MAAM,CAcP;IAEF,+BAA+B,GAC7B,OAAO,KAAK,EACZ,qBAAqB,MAAM,EAAE,GAAG,IAAI,EACpC,SAAS,MAAM,EACf,KAAK,IAAI,KACR,6BAA6B,GAAG,IAAI,CAwBrC;IAEF,gCAAgC,GAC9B,WAAW,MAAM,EAAE,KAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAsCjD;IAEF,OAAO,CAAC,oBAAoB,CA6E1B;IAEF,kBAAkB,GAChB,aAAa,gBAAgB,EAAE,EAC/B,gCAAgC,MAAM,EACtC,WAAW,MAAM,GAAG,IAAI,KACvB,kBAAkB,EAAE,CAqDrB;IAEF,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;QACpC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,oBAAoB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KAC1B,KAAG,OAAO,CAAC;QAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CA6ZzD;CACH"}
@@ -7,5 +7,6 @@ export interface LocalCommandRunner {
7
7
  stderr: string;
8
8
  exitCode: number;
9
9
  }>;
10
+ spawnInteractive(program: string, args: string[]): void;
10
11
  }
11
12
  //# sourceMappingURL=LocalCommandRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalCommandRunner.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/LocalCommandRunner.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CACR,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"LocalCommandRunner.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/LocalCommandRunner.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CACR,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACzD"}
@@ -8,5 +8,6 @@ export interface TmuxSessionRepository {
8
8
  killOwnSession: () => Promise<void>;
9
9
  sendKeys: (sessionName: string, literalText: string) => Promise<void>;
10
10
  launchBareNameLeaderSession: (name: string) => Promise<void>;
11
+ attachOrCreateInteractiveSession: (issueUrl: string, scopeLibPath: string | null) => Promise<void>;
11
12
  }
12
13
  //# sourceMappingURL=TmuxSessionRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,4BAA4B,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,kCAAkC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,qBAAqB,EAAE,CACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,2BAA2B,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D"}
1
+ {"version":3,"file":"TmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,4BAA4B,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,kCAAkC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,qBAAqB,EAAE,CACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,2BAA2B,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,gCAAgC,EAAE,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,IAAI,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
@@ -1,3 +1,3 @@
1
1
  export declare const AWAITING_OWNER_APPROVAL_MESSAGE_HEAD = "Auto Status Check: AWAITING_OWNER_APPROVAL";
2
- export declare const AWAITING_OWNER_APPROVAL_MESSAGE = "Auto Status Check: AWAITING_OWNER_APPROVAL\nThe last report declared that this task is waiting for owner approval. Returning to Awaiting Workspace for the next cycle.";
2
+ export declare const AWAITING_OWNER_APPROVAL_MESSAGE = "Auto Status Check: AWAITING_OWNER_APPROVAL\nThe last report declared that this task is waiting for owner approval. Moving it to Todo by human so that it waits in the owner's queue instead of being dispatched again.";
3
3
  //# sourceMappingURL=awaitingOwnerApprovalMessage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaitingOwnerApprovalMessage.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/awaitingOwnerApprovalMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oCAAoC,+CACH,CAAC;AAE/C,eAAO,MAAM,+BAA+B,2KAC+E,CAAC"}
1
+ {"version":3,"file":"awaitingOwnerApprovalMessage.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/awaitingOwnerApprovalMessage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oCAAoC,+CACH,CAAC;AAE/C,eAAO,MAAM,+BAA+B,2NAC+H,CAAC"}