@generacy-ai/generacy-plugin-copilot 0.0.0-preview-20260304013206
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.
- package/LICENSE +191 -0
- package/README.md +140 -0
- package/dist/errors.d.ts +70 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +116 -0
- package/dist/errors.js.map +1 -0
- package/dist/github/client.d.ts +46 -0
- package/dist/github/client.d.ts.map +1 -0
- package/dist/github/client.js +165 -0
- package/dist/github/client.js.map +1 -0
- package/dist/github/types.d.ts +91 -0
- package/dist/github/types.d.ts.map +1 -0
- package/dist/github/types.js +7 -0
- package/dist/github/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin/copilot-plugin.d.ts +90 -0
- package/dist/plugin/copilot-plugin.d.ts.map +1 -0
- package/dist/plugin/copilot-plugin.js +289 -0
- package/dist/plugin/copilot-plugin.js.map +1 -0
- package/dist/polling/status-poller.d.ts +36 -0
- package/dist/polling/status-poller.d.ts.map +1 -0
- package/dist/polling/status-poller.js +142 -0
- package/dist/polling/status-poller.js.map +1 -0
- package/dist/polling/types.d.ts +62 -0
- package/dist/polling/types.d.ts.map +1 -0
- package/dist/polling/types.js +16 -0
- package/dist/polling/types.js.map +1 -0
- package/dist/schemas.d.ts +341 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +176 -0
- package/dist/schemas.js.map +1 -0
- package/dist/types.d.ts +161 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace/types.d.ts +61 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +7 -0
- package/dist/workspace/types.js.map +1 -0
- package/dist/workspace/workspace-manager.d.ts +65 -0
- package/dist/workspace/workspace-manager.d.ts.map +1 -0
- package/dist/workspace/workspace-manager.js +294 -0
- package/dist/workspace/workspace-manager.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAMnC;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,UAAU,GACV,cAAc,GACd,cAAc,GACd,QAAQ,GACR,QAAQ,GACR,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,eAAe,CAAC;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAMD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,mBAAmB,GAAG,WAAW,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,qBAAqB,GACrB,yBAAyB,GACzB,kBAAkB,GAClB,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnE;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAE7D;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnE;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEvE;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE/D"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generacy-ai/generacy-plugin-copilot
|
|
3
|
+
*
|
|
4
|
+
* Core type definitions for Copilot Workspace integration.
|
|
5
|
+
*/
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// Type Guards
|
|
8
|
+
// =============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Type guard for terminal workspace statuses.
|
|
11
|
+
*/
|
|
12
|
+
export function isTerminalStatus(status) {
|
|
13
|
+
return ['merged', 'failed', 'not_available'].includes(status);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Type guard for active workspace statuses.
|
|
17
|
+
*/
|
|
18
|
+
export function isActiveStatus(status) {
|
|
19
|
+
return ['pending', 'planning', 'implementing', 'review_ready'].includes(status);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+MH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generacy-ai/generacy-plugin-copilot
|
|
3
|
+
*
|
|
4
|
+
* Workspace management type definitions.
|
|
5
|
+
*/
|
|
6
|
+
import type { Workspace, WorkspaceOptions, WorkspaceStatus } from '../types.js';
|
|
7
|
+
import type { PollState } from '../polling/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Internal workspace representation with mutable state.
|
|
10
|
+
*/
|
|
11
|
+
export interface InternalWorkspace {
|
|
12
|
+
/** Public workspace data */
|
|
13
|
+
workspace: Workspace;
|
|
14
|
+
/** Polling state */
|
|
15
|
+
pollState: PollState;
|
|
16
|
+
/** Associated GitHub data */
|
|
17
|
+
github: {
|
|
18
|
+
issueId: number;
|
|
19
|
+
linkedPRNumbers: number[];
|
|
20
|
+
};
|
|
21
|
+
/** Workspace options */
|
|
22
|
+
options: WorkspaceOptions;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parameters for creating a workspace.
|
|
26
|
+
*/
|
|
27
|
+
export interface CreateWorkspaceParams {
|
|
28
|
+
issueUrl: string;
|
|
29
|
+
options?: WorkspaceOptions;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of inferring status from GitHub.
|
|
33
|
+
*/
|
|
34
|
+
export interface StatusInference {
|
|
35
|
+
/** Inferred status */
|
|
36
|
+
status: WorkspaceStatus;
|
|
37
|
+
/** Associated PR number if found */
|
|
38
|
+
prNumber?: number;
|
|
39
|
+
/** PR URL if found */
|
|
40
|
+
prUrl?: string;
|
|
41
|
+
/** Confidence level */
|
|
42
|
+
confidence: 'high' | 'medium' | 'low';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Workspace storage interface.
|
|
46
|
+
*/
|
|
47
|
+
export interface WorkspaceStore {
|
|
48
|
+
/** Get a workspace by ID */
|
|
49
|
+
get(workspaceId: string): InternalWorkspace | undefined;
|
|
50
|
+
/** Set a workspace */
|
|
51
|
+
set(workspaceId: string, workspace: InternalWorkspace): void;
|
|
52
|
+
/** Delete a workspace */
|
|
53
|
+
delete(workspaceId: string): boolean;
|
|
54
|
+
/** Check if workspace exists */
|
|
55
|
+
has(workspaceId: string): boolean;
|
|
56
|
+
/** Get all workspace IDs */
|
|
57
|
+
keys(): Iterable<string>;
|
|
58
|
+
/** Clear all workspaces */
|
|
59
|
+
clear(): void;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,SAAS,EAAE,SAAS,CAAC;IAErB,oBAAoB;IACpB,SAAS,EAAE,SAAS,CAAC;IAErB,6BAA6B;IAC7B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAEF,wBAAwB;IACxB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACxD,sBAAsB;IACtB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7D,yBAAyB;IACzB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,gCAAgC;IAChC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,4BAA4B;IAC5B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,2BAA2B;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generacy-ai/generacy-plugin-copilot
|
|
3
|
+
*
|
|
4
|
+
* Workspace lifecycle management.
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger } from 'pino';
|
|
7
|
+
import { GitHubClient } from '../github/client.js';
|
|
8
|
+
import type { PollingConfig } from '../polling/types.js';
|
|
9
|
+
import type { FileChange, PullRequest, Workspace, WorkspaceOptions, WorkspaceStatus, WorkspaceStatusEvent } from '../types.js';
|
|
10
|
+
import type { CreateWorkspaceParams, WorkspaceStore } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Workspace lifecycle manager.
|
|
13
|
+
*/
|
|
14
|
+
export declare class WorkspaceManager {
|
|
15
|
+
private readonly store;
|
|
16
|
+
private readonly githubClient;
|
|
17
|
+
private readonly pollingConfig;
|
|
18
|
+
private readonly defaultOptions;
|
|
19
|
+
private readonly logger?;
|
|
20
|
+
constructor(githubClient: GitHubClient, options?: {
|
|
21
|
+
store?: WorkspaceStore;
|
|
22
|
+
pollingConfig?: Partial<PollingConfig>;
|
|
23
|
+
defaultOptions?: WorkspaceOptions;
|
|
24
|
+
logger?: Logger;
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Create a new workspace for tracking.
|
|
28
|
+
*/
|
|
29
|
+
createWorkspace(params: CreateWorkspaceParams): Promise<Workspace>;
|
|
30
|
+
/**
|
|
31
|
+
* Get a workspace by ID.
|
|
32
|
+
*/
|
|
33
|
+
getWorkspace(workspaceId: string): Promise<Workspace | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Poll the current status of a workspace.
|
|
36
|
+
*/
|
|
37
|
+
pollWorkspaceStatus(workspaceId: string): Promise<WorkspaceStatus>;
|
|
38
|
+
/**
|
|
39
|
+
* Get file changes from a completed workspace.
|
|
40
|
+
*/
|
|
41
|
+
getChanges(workspaceId: string): Promise<FileChange[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Get the pull request associated with the workspace.
|
|
44
|
+
*/
|
|
45
|
+
getPullRequest(workspaceId: string): Promise<PullRequest | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Stream status updates from a workspace.
|
|
48
|
+
*/
|
|
49
|
+
streamStatus(workspaceId: string): AsyncIterable<WorkspaceStatusEvent>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete a workspace.
|
|
52
|
+
*/
|
|
53
|
+
deleteWorkspace(workspaceId: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Clear all workspaces.
|
|
56
|
+
*/
|
|
57
|
+
clear(): void;
|
|
58
|
+
private getInternalWorkspace;
|
|
59
|
+
private inferStatusFromGitHub;
|
|
60
|
+
private mapFileStatus;
|
|
61
|
+
private mapGitHubPRToPluginPR;
|
|
62
|
+
private getReviewStatus;
|
|
63
|
+
private generateWorkspaceId;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=workspace-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../src/workspace/workspace-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,qBAAqB,EAGrB,cAAc,EACf,MAAM,YAAY,CAAC;AAiCpB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAG/B,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACvC,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ;IASR;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;IA4CxE;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBxE;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiC5D;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAuBtE;;OAEG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC;IAwB7E;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAQ7C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,oBAAoB;YAQd,qBAAqB;IAgDnC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,mBAAmB;CAG5B"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generacy-ai/generacy-plugin-copilot
|
|
3
|
+
*
|
|
4
|
+
* Workspace lifecycle management.
|
|
5
|
+
*/
|
|
6
|
+
import { randomUUID } from 'node:crypto';
|
|
7
|
+
import { WorkspaceNotFoundError, WorkspaceInvalidStateError } from '../errors.js';
|
|
8
|
+
import { parseIssueUrl } from '../github/client.js';
|
|
9
|
+
import { StatusPoller } from '../polling/status-poller.js';
|
|
10
|
+
/**
|
|
11
|
+
* In-memory workspace store.
|
|
12
|
+
*/
|
|
13
|
+
class InMemoryWorkspaceStore {
|
|
14
|
+
workspaces = new Map();
|
|
15
|
+
get(workspaceId) {
|
|
16
|
+
return this.workspaces.get(workspaceId);
|
|
17
|
+
}
|
|
18
|
+
set(workspaceId, workspace) {
|
|
19
|
+
this.workspaces.set(workspaceId, workspace);
|
|
20
|
+
}
|
|
21
|
+
delete(workspaceId) {
|
|
22
|
+
return this.workspaces.delete(workspaceId);
|
|
23
|
+
}
|
|
24
|
+
has(workspaceId) {
|
|
25
|
+
return this.workspaces.has(workspaceId);
|
|
26
|
+
}
|
|
27
|
+
keys() {
|
|
28
|
+
return this.workspaces.keys();
|
|
29
|
+
}
|
|
30
|
+
clear() {
|
|
31
|
+
this.workspaces.clear();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Workspace lifecycle manager.
|
|
36
|
+
*/
|
|
37
|
+
export class WorkspaceManager {
|
|
38
|
+
store;
|
|
39
|
+
githubClient;
|
|
40
|
+
pollingConfig;
|
|
41
|
+
defaultOptions;
|
|
42
|
+
logger;
|
|
43
|
+
constructor(githubClient, options = {}) {
|
|
44
|
+
this.store = options.store ?? new InMemoryWorkspaceStore();
|
|
45
|
+
this.githubClient = githubClient;
|
|
46
|
+
this.pollingConfig = options.pollingConfig ?? {};
|
|
47
|
+
this.defaultOptions = options.defaultOptions ?? {};
|
|
48
|
+
this.logger = options.logger;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a new workspace for tracking.
|
|
52
|
+
*/
|
|
53
|
+
async createWorkspace(params) {
|
|
54
|
+
const parsed = parseIssueUrl(params.issueUrl);
|
|
55
|
+
const workspaceId = this.generateWorkspaceId();
|
|
56
|
+
const now = new Date();
|
|
57
|
+
// Verify issue exists
|
|
58
|
+
const issue = await this.githubClient.getIssue(parsed.owner, parsed.repo, parsed.issueNumber);
|
|
59
|
+
const workspace = {
|
|
60
|
+
id: workspaceId,
|
|
61
|
+
issueUrl: params.issueUrl,
|
|
62
|
+
status: 'pending',
|
|
63
|
+
createdAt: now,
|
|
64
|
+
updatedAt: now,
|
|
65
|
+
owner: parsed.owner,
|
|
66
|
+
repo: parsed.repo,
|
|
67
|
+
issueNumber: parsed.issueNumber,
|
|
68
|
+
};
|
|
69
|
+
const internal = {
|
|
70
|
+
workspace,
|
|
71
|
+
pollState: {
|
|
72
|
+
pollCount: 0,
|
|
73
|
+
currentIntervalMs: 5000,
|
|
74
|
+
startedAt: now,
|
|
75
|
+
isActive: false,
|
|
76
|
+
},
|
|
77
|
+
github: {
|
|
78
|
+
issueId: issue.id,
|
|
79
|
+
linkedPRNumbers: [],
|
|
80
|
+
},
|
|
81
|
+
options: { ...this.defaultOptions, ...params.options },
|
|
82
|
+
};
|
|
83
|
+
this.store.set(workspaceId, internal);
|
|
84
|
+
this.logger?.info({ workspaceId, issueUrl: params.issueUrl }, 'Workspace created');
|
|
85
|
+
return workspace;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get a workspace by ID.
|
|
89
|
+
*/
|
|
90
|
+
async getWorkspace(workspaceId) {
|
|
91
|
+
const internal = this.store.get(workspaceId);
|
|
92
|
+
return internal?.workspace ?? null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Poll the current status of a workspace.
|
|
96
|
+
*/
|
|
97
|
+
async pollWorkspaceStatus(workspaceId) {
|
|
98
|
+
const internal = this.getInternalWorkspace(workspaceId);
|
|
99
|
+
const inference = await this.inferStatusFromGitHub(internal);
|
|
100
|
+
// Update workspace if status changed
|
|
101
|
+
if (inference.status !== internal.workspace.status) {
|
|
102
|
+
internal.workspace = {
|
|
103
|
+
...internal.workspace,
|
|
104
|
+
status: inference.status,
|
|
105
|
+
updatedAt: new Date(),
|
|
106
|
+
pullRequestUrl: inference.prUrl ?? internal.workspace.pullRequestUrl,
|
|
107
|
+
};
|
|
108
|
+
internal.pollState.pollCount++;
|
|
109
|
+
internal.pollState.lastPolledAt = new Date();
|
|
110
|
+
if (inference.prNumber && !internal.github.linkedPRNumbers.includes(inference.prNumber)) {
|
|
111
|
+
internal.github.linkedPRNumbers.push(inference.prNumber);
|
|
112
|
+
}
|
|
113
|
+
this.store.set(workspaceId, internal);
|
|
114
|
+
}
|
|
115
|
+
return inference.status;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get file changes from a completed workspace.
|
|
119
|
+
*/
|
|
120
|
+
async getChanges(workspaceId) {
|
|
121
|
+
const internal = this.getInternalWorkspace(workspaceId);
|
|
122
|
+
if (!['review_ready', 'merged'].includes(internal.workspace.status)) {
|
|
123
|
+
throw new WorkspaceInvalidStateError(workspaceId, internal.workspace.status, ['review_ready', 'merged'], 'get changes');
|
|
124
|
+
}
|
|
125
|
+
const prNumber = internal.github.linkedPRNumbers[0];
|
|
126
|
+
if (!prNumber) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
const files = await this.githubClient.getPullRequestFiles(internal.workspace.owner, internal.workspace.repo, prNumber);
|
|
130
|
+
return files.map((file) => ({
|
|
131
|
+
path: file.filename,
|
|
132
|
+
type: this.mapFileStatus(file.status),
|
|
133
|
+
previousPath: file.previous_filename,
|
|
134
|
+
additions: file.additions,
|
|
135
|
+
deletions: file.deletions,
|
|
136
|
+
patch: file.patch,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the pull request associated with the workspace.
|
|
141
|
+
*/
|
|
142
|
+
async getPullRequest(workspaceId) {
|
|
143
|
+
const internal = this.getInternalWorkspace(workspaceId);
|
|
144
|
+
const prNumber = internal.github.linkedPRNumbers[0];
|
|
145
|
+
if (!prNumber) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const ghPr = await this.githubClient.getPullRequest(internal.workspace.owner, internal.workspace.repo, prNumber);
|
|
149
|
+
const reviews = await this.githubClient.getPullRequestReviews(internal.workspace.owner, internal.workspace.repo, prNumber);
|
|
150
|
+
return this.mapGitHubPRToPluginPR(ghPr, reviews, internal.workspace.issueNumber);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Stream status updates from a workspace.
|
|
154
|
+
*/
|
|
155
|
+
async *streamStatus(workspaceId) {
|
|
156
|
+
const internal = this.getInternalWorkspace(workspaceId);
|
|
157
|
+
const poller = new StatusPoller(workspaceId, this.pollingConfig);
|
|
158
|
+
const checkStatus = async () => {
|
|
159
|
+
const inference = await this.inferStatusFromGitHub(internal);
|
|
160
|
+
// Update internal state
|
|
161
|
+
if (inference.status !== internal.workspace.status) {
|
|
162
|
+
internal.workspace = {
|
|
163
|
+
...internal.workspace,
|
|
164
|
+
status: inference.status,
|
|
165
|
+
updatedAt: new Date(),
|
|
166
|
+
pullRequestUrl: inference.prUrl ?? internal.workspace.pullRequestUrl,
|
|
167
|
+
};
|
|
168
|
+
this.store.set(workspaceId, internal);
|
|
169
|
+
}
|
|
170
|
+
return inference.status;
|
|
171
|
+
};
|
|
172
|
+
yield* poller.streamStatus(checkStatus);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Delete a workspace.
|
|
176
|
+
*/
|
|
177
|
+
deleteWorkspace(workspaceId) {
|
|
178
|
+
const deleted = this.store.delete(workspaceId);
|
|
179
|
+
if (deleted) {
|
|
180
|
+
this.logger?.info({ workspaceId }, 'Workspace deleted');
|
|
181
|
+
}
|
|
182
|
+
return deleted;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Clear all workspaces.
|
|
186
|
+
*/
|
|
187
|
+
clear() {
|
|
188
|
+
this.store.clear();
|
|
189
|
+
this.logger?.info('All workspaces cleared');
|
|
190
|
+
}
|
|
191
|
+
getInternalWorkspace(workspaceId) {
|
|
192
|
+
const internal = this.store.get(workspaceId);
|
|
193
|
+
if (!internal) {
|
|
194
|
+
throw new WorkspaceNotFoundError(workspaceId);
|
|
195
|
+
}
|
|
196
|
+
return internal;
|
|
197
|
+
}
|
|
198
|
+
async inferStatusFromGitHub(internal) {
|
|
199
|
+
try {
|
|
200
|
+
// Check for linked PRs
|
|
201
|
+
const prs = await this.githubClient.listLinkedPullRequests(internal.workspace.owner, internal.workspace.repo, internal.workspace.issueNumber);
|
|
202
|
+
if (prs.length === 0) {
|
|
203
|
+
// No PRs linked yet - still pending
|
|
204
|
+
return { status: 'pending', confidence: 'medium' };
|
|
205
|
+
}
|
|
206
|
+
// Use the most recent PR
|
|
207
|
+
const pr = prs[0];
|
|
208
|
+
if (pr.merged) {
|
|
209
|
+
return {
|
|
210
|
+
status: 'merged',
|
|
211
|
+
prNumber: pr.number,
|
|
212
|
+
prUrl: pr.html_url,
|
|
213
|
+
confidence: 'high',
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
if (pr.state === 'closed') {
|
|
217
|
+
return {
|
|
218
|
+
status: 'failed',
|
|
219
|
+
prNumber: pr.number,
|
|
220
|
+
prUrl: pr.html_url,
|
|
221
|
+
confidence: 'medium',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// PR is open - check review status
|
|
225
|
+
return {
|
|
226
|
+
status: 'review_ready',
|
|
227
|
+
prNumber: pr.number,
|
|
228
|
+
prUrl: pr.html_url,
|
|
229
|
+
confidence: 'high',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
this.logger?.warn({ workspaceId: internal.workspace.id, error }, 'Failed to infer status');
|
|
234
|
+
return { status: 'not_available', confidence: 'low' };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
mapFileStatus(status) {
|
|
238
|
+
switch (status) {
|
|
239
|
+
case 'added':
|
|
240
|
+
return 'added';
|
|
241
|
+
case 'removed':
|
|
242
|
+
return 'deleted';
|
|
243
|
+
case 'renamed':
|
|
244
|
+
return 'renamed';
|
|
245
|
+
default:
|
|
246
|
+
return 'modified';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
mapGitHubPRToPluginPR(ghPr, reviews, issueNumber) {
|
|
250
|
+
return {
|
|
251
|
+
number: ghPr.number,
|
|
252
|
+
url: ghPr.html_url,
|
|
253
|
+
title: ghPr.title,
|
|
254
|
+
body: ghPr.body ?? '',
|
|
255
|
+
state: ghPr.merged ? 'merged' : ghPr.state,
|
|
256
|
+
head: ghPr.head.ref,
|
|
257
|
+
base: ghPr.base.ref,
|
|
258
|
+
mergeable: ghPr.mergeable ?? undefined,
|
|
259
|
+
linkedIssues: [issueNumber],
|
|
260
|
+
reviewStatus: this.getReviewStatus(reviews),
|
|
261
|
+
changedFiles: ghPr.changed_files,
|
|
262
|
+
additions: ghPr.additions,
|
|
263
|
+
deletions: ghPr.deletions,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
getReviewStatus(reviews) {
|
|
267
|
+
if (reviews.length === 0) {
|
|
268
|
+
return 'pending';
|
|
269
|
+
}
|
|
270
|
+
// Get the most recent review state per reviewer
|
|
271
|
+
const latestByReviewer = new Map();
|
|
272
|
+
for (const review of reviews) {
|
|
273
|
+
const existing = latestByReviewer.get(review.user.login);
|
|
274
|
+
if (!existing || new Date(review.submitted_at) > new Date(existing.submitted_at)) {
|
|
275
|
+
latestByReviewer.set(review.user.login, review);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
const states = [...latestByReviewer.values()].map((r) => r.state);
|
|
279
|
+
if (states.includes('CHANGES_REQUESTED')) {
|
|
280
|
+
return 'changes_requested';
|
|
281
|
+
}
|
|
282
|
+
if (states.includes('APPROVED')) {
|
|
283
|
+
return 'approved';
|
|
284
|
+
}
|
|
285
|
+
if (states.includes('DISMISSED')) {
|
|
286
|
+
return 'dismissed';
|
|
287
|
+
}
|
|
288
|
+
return 'pending';
|
|
289
|
+
}
|
|
290
|
+
generateWorkspaceId() {
|
|
291
|
+
return `ws_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=workspace-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/workspace/workspace-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@generacy-ai/generacy-plugin-copilot",
|
|
3
|
+
"version": "0.0.0-preview-20260304013206",
|
|
4
|
+
"description": "GitHub Copilot Workspace agent platform plugin for Generacy - tracks and monitors Copilot Workspace sessions",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@generacy-ai/latency": "^0.1.0",
|
|
16
|
+
"@generacy-ai/latency-plugin-dev-agent": "^0.1.0",
|
|
17
|
+
"@octokit/rest": "^21.0.2",
|
|
18
|
+
"pino": "^9.0.0",
|
|
19
|
+
"zod": "^3.23.0"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/node": "^20.0.0",
|
|
23
|
+
"typescript": "^5.6.0",
|
|
24
|
+
"vitest": "^3.2.4",
|
|
25
|
+
"tsx": "^4.0.0"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=20.0.0"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"keywords": [
|
|
34
|
+
"copilot",
|
|
35
|
+
"copilot-workspace",
|
|
36
|
+
"agent",
|
|
37
|
+
"plugin",
|
|
38
|
+
"github",
|
|
39
|
+
"generacy"
|
|
40
|
+
],
|
|
41
|
+
"license": "Apache-2.0",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/generacy-ai/generacy.git",
|
|
45
|
+
"directory": "packages/generacy-plugin-copilot"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc",
|
|
52
|
+
"dev": "tsx watch src/index.ts",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:watch": "vitest",
|
|
55
|
+
"lint": "eslint src tests --ext .ts",
|
|
56
|
+
"typecheck": "tsc --noEmit"
|
|
57
|
+
}
|
|
58
|
+
}
|