@amaster.ai/pi-teamwork 0.1.2-beta.7 → 0.1.2-beta.70
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/README.md +56 -7
- package/dist/adapters/multica.d.ts +19 -8
- package/dist/adapters/multica.d.ts.map +1 -1
- package/dist/adapters/multica.js +83 -20
- package/dist/adapters/multica.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +327 -163
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +15 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -4
- package/preview.png +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @amaster.ai/pi-teamwork
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
3
5
|
Pi extension for team collaboration and project management. Provides LLM-callable tools to interact with issue trackers and project management systems.
|
|
4
6
|
|
|
5
7
|
## Supported Providers
|
|
@@ -8,7 +10,17 @@ Pi extension for team collaboration and project management. Provides LLM-callabl
|
|
|
8
10
|
|
|
9
11
|
## Configuration
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
### Auto-Install
|
|
14
|
+
|
|
15
|
+
Runtime auto-installation is disabled because mutable package-manager taps and download scripts cannot provide the pinned artifact verification required in a credential-bearing agent process. Install a pinned Multica release separately and put the verified binary on `$PATH`, or configure `multica.binary`.
|
|
16
|
+
|
|
17
|
+
The deprecated `autoInstall: true` setting no longer executes an installer. It only reports a clear error when the binary is missing.
|
|
18
|
+
|
|
19
|
+
Configuration may live in user/agent settings or in a trusted project's `.pi/settings.json`. Project settings are ignored when trust is declined and do not expand `${ENV_VAR}`; keep environment-backed credentials in user or agent settings.
|
|
20
|
+
|
|
21
|
+
### Mode 1 — Self-hosted server
|
|
22
|
+
|
|
23
|
+
For teams running their own Multica server. The extension runs `multica setup self-host` with the provided URLs, then authenticates with the token:
|
|
12
24
|
|
|
13
25
|
```json
|
|
14
26
|
{
|
|
@@ -16,21 +28,58 @@ Add to `.pi/settings.json`:
|
|
|
16
28
|
"enabled": true,
|
|
17
29
|
"provider": "multica",
|
|
18
30
|
"multica": {
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"token": ""
|
|
31
|
+
"serverUrl": "https://api.your-server.com",
|
|
32
|
+
"appUrl": "https://your-server.com",
|
|
33
|
+
"token": "<token-from-multica-server>"
|
|
22
34
|
}
|
|
23
35
|
}
|
|
24
36
|
}
|
|
25
37
|
```
|
|
26
38
|
|
|
39
|
+
### Mode 2 — Pre-configured environment
|
|
40
|
+
|
|
41
|
+
Run `multica setup` once on the machine and finish login through multica's normal flow. The extension will reuse that state:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"pi-teamwork": {
|
|
46
|
+
"enabled": true,
|
|
47
|
+
"provider": "multica",
|
|
48
|
+
"multica": {
|
|
49
|
+
"workspace": ""
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Mode 3 — Headless token (Multica Cloud)
|
|
56
|
+
|
|
57
|
+
For CI or non-interactive environments where you can't run `multica setup`. The extension will run `multica login --token <token>` on every `session_start`:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"pi-teamwork": {
|
|
62
|
+
"enabled": true,
|
|
63
|
+
"provider": "multica",
|
|
64
|
+
"multica": {
|
|
65
|
+
"token": "<token-from-multica-server>"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
> ⚠️ `token` is a credential. Keep it out of version control — put it in a local-only settings file or inject via env-substituted config.
|
|
72
|
+
|
|
27
73
|
| Field | Description |
|
|
28
74
|
|-------|-------------|
|
|
29
75
|
| `enabled` | Enable/disable the extension |
|
|
30
|
-
| `provider` | Provider name (
|
|
76
|
+
| `provider` | Provider name (`multica`) |
|
|
31
77
|
| `multica.binary` | Path to multica binary (default: `multica`) |
|
|
32
|
-
| `multica.workspace` | Workspace ID override |
|
|
33
|
-
| `multica.token` |
|
|
78
|
+
| `multica.workspace` | Workspace ID override; leave empty to use multica's default |
|
|
79
|
+
| `multica.token` | Headless-login token. Omit when multica is already logged in on the machine |
|
|
80
|
+
| `multica.serverUrl` | Self-hosted server API URL. Triggers `multica setup self-host --server-url` on start |
|
|
81
|
+
| `multica.appUrl` | Self-hosted server frontend URL. Required when `serverUrl` is a remote address |
|
|
82
|
+
| `multica.autoInstall` | Deprecated compatibility flag; no installer is executed (default: `false`) |
|
|
34
83
|
|
|
35
84
|
## Tools
|
|
36
85
|
|
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
import type { Comment, ExecFn, Issue, IssueCreateInput, IssueListFilter, IssueUpdateInput, MulticaAdapterConfig, Project, TeamworkProvider } from '../types.js';
|
|
2
|
-
export
|
|
1
|
+
import type { Comment, ExecFn, Issue, IssueCreateInput, IssueListFilter, IssueUpdateInput, MulticaAdapterConfig, Project, TeamworkProvider, Workspace } from '../types.js';
|
|
2
|
+
export type InstallResult = {
|
|
3
|
+
installed: boolean;
|
|
4
|
+
alreadyPresent: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
};
|
|
7
|
+
export type InitMulticaResult = {
|
|
8
|
+
adapter: MulticaAdapter;
|
|
9
|
+
installResult: InstallResult;
|
|
10
|
+
};
|
|
11
|
+
export declare function initMulticaProvider(config: MulticaAdapterConfig, exec: ExecFn): Promise<InitMulticaResult>;
|
|
3
12
|
export declare class MulticaAdapter implements TeamworkProvider {
|
|
4
13
|
private readonly exec;
|
|
5
14
|
readonly name = "multica";
|
|
6
15
|
private readonly binary;
|
|
7
|
-
private readonly
|
|
16
|
+
private readonly defaultWorkspaceArgs;
|
|
8
17
|
constructor(config: MulticaAdapterConfig, exec: ExecFn);
|
|
18
|
+
private wsArgs;
|
|
19
|
+
listWorkspaces(): Promise<Workspace[]>;
|
|
9
20
|
listIssues(filter?: IssueListFilter): Promise<Issue[]>;
|
|
10
|
-
getIssue(id: string): Promise<Issue | undefined>;
|
|
21
|
+
getIssue(id: string, workspaceId?: string): Promise<Issue | undefined>;
|
|
11
22
|
createIssue(input: IssueCreateInput): Promise<Issue>;
|
|
12
|
-
updateIssue(id: string, input: IssueUpdateInput): Promise<Issue | undefined>;
|
|
13
|
-
addComment(issueId: string, content: string, parentId?: string): Promise<Comment>;
|
|
14
|
-
listComments(issueId: string): Promise<Comment[]>;
|
|
15
|
-
listProjects(): Promise<Project[]>;
|
|
23
|
+
updateIssue(id: string, input: IssueUpdateInput, workspaceId?: string): Promise<Issue | undefined>;
|
|
24
|
+
addComment(issueId: string, content: string, parentId?: string, workspaceId?: string): Promise<Comment>;
|
|
25
|
+
listComments(issueId: string, workspaceId?: string): Promise<Comment[]>;
|
|
26
|
+
listProjects(workspaceId?: string): Promise<Project[]>;
|
|
16
27
|
status(): Promise<Record<string, unknown>>;
|
|
17
28
|
private run;
|
|
18
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multica.d.ts","sourceRoot":"","sources":["../../src/adapters/multica.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,
|
|
1
|
+
{"version":3,"file":"multica.d.ts","sourceRoot":"","sources":["../../src/adapters/multica.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAiD5B;AAED,qBAAa,cAAe,YAAW,gBAAgB;IAOnD,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAW;gBAG9C,MAAM,EAAE,oBAAoB,EACX,IAAI,EAAE,MAAM;IAQ/B,OAAO,CAAC,MAAM;IAIR,cAAc,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUtC,UAAU,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAatD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IActE,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IAapD,WAAW,CACf,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,gBAAgB,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAgBvB,UAAU,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAmBb,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAsBvE,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAmBtD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YASlC,GAAG;CAQlB"}
|
package/dist/adapters/multica.js
CHANGED
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
export async function initMulticaProvider(config, exec) {
|
|
2
2
|
const binary = config.binary?.trim() || 'multica';
|
|
3
|
-
|
|
3
|
+
let available = false;
|
|
4
|
+
try {
|
|
5
|
+
available = (await exec(binary, ['--version'])).code === 0;
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
available = false;
|
|
9
|
+
}
|
|
10
|
+
const installResult = available
|
|
11
|
+
? { installed: true, alreadyPresent: true }
|
|
12
|
+
: {
|
|
13
|
+
installed: false,
|
|
14
|
+
alreadyPresent: false,
|
|
15
|
+
error: 'install a pinned multica release manually',
|
|
16
|
+
};
|
|
17
|
+
if (!installResult.installed) {
|
|
18
|
+
return { adapter: new MulticaAdapter(config, exec), installResult };
|
|
19
|
+
}
|
|
20
|
+
if (config.serverUrl) {
|
|
4
21
|
try {
|
|
5
|
-
await exec(binary, ['
|
|
22
|
+
await exec(binary, ['config', 'set', 'server_url', config.serverUrl]);
|
|
6
23
|
}
|
|
7
24
|
catch {
|
|
8
|
-
//
|
|
25
|
+
// Config may already be set
|
|
26
|
+
}
|
|
27
|
+
if (config.appUrl) {
|
|
28
|
+
try {
|
|
29
|
+
await exec(binary, ['config', 'set', 'app_url', config.appUrl]);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Config may already be set
|
|
33
|
+
}
|
|
9
34
|
}
|
|
10
35
|
}
|
|
11
36
|
try {
|
|
@@ -14,22 +39,44 @@ export async function initMulticaProvider(config, exec) {
|
|
|
14
39
|
catch {
|
|
15
40
|
// Daemon may already be running
|
|
16
41
|
}
|
|
17
|
-
|
|
42
|
+
if (config.token) {
|
|
43
|
+
try {
|
|
44
|
+
await exec(binary, ['login', '--token', config.token]);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Login may already be done
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { adapter: new MulticaAdapter(config, exec), installResult };
|
|
18
51
|
}
|
|
19
52
|
export class MulticaAdapter {
|
|
20
53
|
exec;
|
|
21
54
|
name = 'multica';
|
|
22
55
|
binary;
|
|
23
|
-
|
|
56
|
+
defaultWorkspaceArgs;
|
|
24
57
|
constructor(config, exec) {
|
|
25
58
|
this.exec = exec;
|
|
26
59
|
this.binary = config.binary?.trim() || 'multica';
|
|
27
|
-
this.
|
|
60
|
+
this.defaultWorkspaceArgs = config.workspace?.trim()
|
|
28
61
|
? ['--workspace-id', config.workspace.trim()]
|
|
29
62
|
: [];
|
|
30
63
|
}
|
|
64
|
+
wsArgs(workspaceId) {
|
|
65
|
+
return workspaceId ? ['--workspace-id', workspaceId] : this.defaultWorkspaceArgs;
|
|
66
|
+
}
|
|
67
|
+
async listWorkspaces() {
|
|
68
|
+
const result = await this.run(['workspace', 'list', '--output', 'json']);
|
|
69
|
+
const data = parseJson(result);
|
|
70
|
+
if (!Array.isArray(data))
|
|
71
|
+
return [];
|
|
72
|
+
return data.map((item) => ({
|
|
73
|
+
id: String(item.id ?? ''),
|
|
74
|
+
name: String(item.name ?? item.title ?? ''),
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
31
77
|
async listIssues(filter) {
|
|
32
|
-
const
|
|
78
|
+
const wsArgs = this.wsArgs(filter?.workspaceId);
|
|
79
|
+
const args = ['issue', 'list', '--output', 'json', ...wsArgs];
|
|
33
80
|
if (filter?.status)
|
|
34
81
|
args.push('--status', filter.status);
|
|
35
82
|
if (filter?.assignee)
|
|
@@ -44,15 +91,23 @@ export class MulticaAdapter {
|
|
|
44
91
|
return [];
|
|
45
92
|
return data.map(mapIssue);
|
|
46
93
|
}
|
|
47
|
-
async getIssue(id) {
|
|
48
|
-
const result = await this.run([
|
|
94
|
+
async getIssue(id, workspaceId) {
|
|
95
|
+
const result = await this.run([
|
|
96
|
+
'issue',
|
|
97
|
+
'get',
|
|
98
|
+
id,
|
|
99
|
+
'--output',
|
|
100
|
+
'json',
|
|
101
|
+
...this.wsArgs(workspaceId),
|
|
102
|
+
]);
|
|
49
103
|
const data = parseJson(result);
|
|
50
104
|
if (!data || typeof data !== 'object')
|
|
51
105
|
return undefined;
|
|
52
106
|
return mapIssue(data);
|
|
53
107
|
}
|
|
54
108
|
async createIssue(input) {
|
|
55
|
-
const
|
|
109
|
+
const wsArgs = this.wsArgs(input.workspaceId);
|
|
110
|
+
const args = ['issue', 'create', '--title', input.title, ...wsArgs];
|
|
56
111
|
if (input.description)
|
|
57
112
|
args.push('--description', input.description);
|
|
58
113
|
if (input.priority)
|
|
@@ -67,9 +122,10 @@ export class MulticaAdapter {
|
|
|
67
122
|
return mapIssue(data);
|
|
68
123
|
return { id: 'unknown', title: input.title, status: 'todo' };
|
|
69
124
|
}
|
|
70
|
-
async updateIssue(id, input) {
|
|
125
|
+
async updateIssue(id, input, workspaceId) {
|
|
126
|
+
const wsArgs = this.wsArgs(workspaceId);
|
|
71
127
|
if (input.status) {
|
|
72
|
-
await this.run(['issue', 'status', id, input.status, ...
|
|
128
|
+
await this.run(['issue', 'status', id, input.status, ...wsArgs]);
|
|
73
129
|
}
|
|
74
130
|
const updateArgs = [];
|
|
75
131
|
if (input.title)
|
|
@@ -81,12 +137,13 @@ export class MulticaAdapter {
|
|
|
81
137
|
if (input.assignee)
|
|
82
138
|
updateArgs.push('--assignee', input.assignee);
|
|
83
139
|
if (updateArgs.length > 0) {
|
|
84
|
-
await this.run(['issue', 'update', id, ...updateArgs, ...
|
|
140
|
+
await this.run(['issue', 'update', id, ...updateArgs, ...wsArgs]);
|
|
85
141
|
}
|
|
86
|
-
return this.getIssue(id);
|
|
142
|
+
return this.getIssue(id, workspaceId);
|
|
87
143
|
}
|
|
88
|
-
async addComment(issueId, content, parentId) {
|
|
89
|
-
const
|
|
144
|
+
async addComment(issueId, content, parentId, workspaceId) {
|
|
145
|
+
const wsArgs = this.wsArgs(workspaceId);
|
|
146
|
+
const args = ['issue', 'comment', 'add', issueId, '--content', content, ...wsArgs];
|
|
90
147
|
if (parentId)
|
|
91
148
|
args.push('--parent', parentId);
|
|
92
149
|
const result = await this.run(args);
|
|
@@ -103,7 +160,7 @@ export class MulticaAdapter {
|
|
|
103
160
|
}
|
|
104
161
|
return { id: 'unknown', issueId, content };
|
|
105
162
|
}
|
|
106
|
-
async listComments(issueId) {
|
|
163
|
+
async listComments(issueId, workspaceId) {
|
|
107
164
|
const result = await this.run([
|
|
108
165
|
'issue',
|
|
109
166
|
'comment',
|
|
@@ -111,7 +168,7 @@ export class MulticaAdapter {
|
|
|
111
168
|
issueId,
|
|
112
169
|
'--output',
|
|
113
170
|
'json',
|
|
114
|
-
...this.
|
|
171
|
+
...this.wsArgs(workspaceId),
|
|
115
172
|
]);
|
|
116
173
|
const data = parseJson(result);
|
|
117
174
|
if (!Array.isArray(data))
|
|
@@ -125,8 +182,14 @@ export class MulticaAdapter {
|
|
|
125
182
|
...(item.parent_id ? { parentId: String(item.parent_id) } : {}),
|
|
126
183
|
}));
|
|
127
184
|
}
|
|
128
|
-
async listProjects() {
|
|
129
|
-
const result = await this.run([
|
|
185
|
+
async listProjects(workspaceId) {
|
|
186
|
+
const result = await this.run([
|
|
187
|
+
'project',
|
|
188
|
+
'list',
|
|
189
|
+
'--output',
|
|
190
|
+
'json',
|
|
191
|
+
...this.wsArgs(workspaceId),
|
|
192
|
+
]);
|
|
130
193
|
const data = parseJson(result);
|
|
131
194
|
if (!Array.isArray(data))
|
|
132
195
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multica.js","sourceRoot":"","sources":["../../src/adapters/multica.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"multica.js","sourceRoot":"","sources":["../../src/adapters/multica.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAwChF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAgIlE"}
|
package/dist/index.js
CHANGED
|
@@ -1,35 +1,132 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isProjectTrusted, loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
2
|
+
import { defineTool } from '@earendil-works/pi-coding-agent';
|
|
2
3
|
import { Type } from 'typebox';
|
|
3
4
|
import { initMulticaProvider } from './adapters/multica.js';
|
|
4
5
|
const SETTINGS_KEY = 'pi-teamwork';
|
|
5
6
|
const STATUS_KEY = 'pi-teamwork';
|
|
7
|
+
const TEAMWORK_TOOL_ORDER = [
|
|
8
|
+
'workspace_list',
|
|
9
|
+
'issue_list',
|
|
10
|
+
'issue_get',
|
|
11
|
+
'issue_create',
|
|
12
|
+
'issue_update',
|
|
13
|
+
'issue_comment',
|
|
14
|
+
'project_list',
|
|
15
|
+
'teamwork_status',
|
|
16
|
+
];
|
|
17
|
+
const TEAMWORK_TOOL_NAMES = new Set(TEAMWORK_TOOL_ORDER);
|
|
18
|
+
const TEAMWORK_GUIDANCE = [
|
|
19
|
+
'<teamwork-guidance>',
|
|
20
|
+
'Use the shared project tracker when the user requests tracker work or has authorized coordination for the current task. Tool availability alone does not authorize comments, issue creation, or status changes. A read-only review stays read-only.',
|
|
21
|
+
'',
|
|
22
|
+
'For authorized tracker work, before starting non-trivial work, check whether a relevant issue already exists (issue_list / issue_get) — to avoid duplicating work another collaborator has picked up.',
|
|
23
|
+
'',
|
|
24
|
+
'Within the authorized coordination scope, when you reach meaningful progress, hit a blocker, or need input from a collaborator, leave a comment on the relevant issue (issue_comment). Comments are how humans and other agents observe what you are doing.',
|
|
25
|
+
'',
|
|
26
|
+
'When completion is verified and issue updates are authorized, update its status (issue_update). An issue left in an outdated state misleads other collaborators.',
|
|
27
|
+
'',
|
|
28
|
+
'The tracker is for cross-collaborator coordination, not for tracking your own session-local TODOs. Do not file an issue just to remind yourself of something within the current conversation.',
|
|
29
|
+
'</teamwork-guidance>',
|
|
30
|
+
].join('\n');
|
|
31
|
+
const WORKSPACE_ID_PARAM = Type.Optional(Type.String({
|
|
32
|
+
description: 'Workspace ID from workspace_list. Optional when the account has exactly one workspace.',
|
|
33
|
+
}));
|
|
6
34
|
export default function piTeamworkExtension(pi) {
|
|
7
35
|
let provider;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
36
|
+
let readyPromise;
|
|
37
|
+
let sessionGeneration = 0;
|
|
38
|
+
const registeredToolNames = new Set();
|
|
39
|
+
const suspendedToolNames = new Set();
|
|
40
|
+
async function ensureReady() {
|
|
41
|
+
if (readyPromise)
|
|
42
|
+
await readyPromise;
|
|
43
|
+
if (!provider)
|
|
44
|
+
return 'Teamwork provider is not initialized.';
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
function getProvider() {
|
|
48
|
+
if (!provider)
|
|
49
|
+
throw new Error('Teamwork provider is not initialized.');
|
|
50
|
+
return provider;
|
|
51
|
+
}
|
|
52
|
+
const teamworkTools = createTeamworkTools(ensureReady, getProvider);
|
|
53
|
+
function registerProviderTools() {
|
|
54
|
+
for (const tool of teamworkTools) {
|
|
55
|
+
if (registeredToolNames.has(tool.name))
|
|
56
|
+
continue;
|
|
57
|
+
pi.registerTool(tool);
|
|
58
|
+
registeredToolNames.add(tool.name);
|
|
59
|
+
}
|
|
60
|
+
alignActiveTeamworkTools(pi, TEAMWORK_TOOL_NAMES, suspendedToolNames);
|
|
61
|
+
}
|
|
62
|
+
function suspendTeamworkTools() {
|
|
63
|
+
alignActiveTeamworkTools(pi, new Set(), suspendedToolNames);
|
|
64
|
+
}
|
|
12
65
|
pi.on('session_start', async (_event, ctx) => {
|
|
13
|
-
const
|
|
66
|
+
const generation = ++sessionGeneration;
|
|
67
|
+
provider = undefined;
|
|
68
|
+
readyPromise = undefined;
|
|
69
|
+
const config = loadConfig(ctx.cwd, isProjectTrusted(ctx));
|
|
14
70
|
if (config.enabled === false) {
|
|
71
|
+
suspendTeamworkTools();
|
|
15
72
|
ctx.ui.setStatus(STATUS_KEY, 'teamwork: disabled');
|
|
16
73
|
return;
|
|
17
74
|
}
|
|
18
75
|
const providerName = config.provider ?? 'multica';
|
|
19
|
-
if (providerName
|
|
20
|
-
|
|
21
|
-
ctx.ui.setStatus(STATUS_KEY, 'teamwork: multica');
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
76
|
+
if (providerName !== 'multica') {
|
|
77
|
+
suspendTeamworkTools();
|
|
24
78
|
ctx.ui.setStatus(STATUS_KEY, `teamwork: unknown provider "${providerName}"`);
|
|
79
|
+
return;
|
|
25
80
|
}
|
|
81
|
+
const exec = async (command, args) => {
|
|
82
|
+
const result = await pi.exec(command, args, { cwd: ctx.cwd });
|
|
83
|
+
return { stdout: result.stdout, stderr: result.stderr, code: result.code };
|
|
84
|
+
};
|
|
85
|
+
readyPromise = (async () => {
|
|
86
|
+
const { adapter, installResult } = await initMulticaProvider(config.multica ?? {}, exec);
|
|
87
|
+
if (generation !== sessionGeneration)
|
|
88
|
+
return;
|
|
89
|
+
provider = adapter;
|
|
90
|
+
registerProviderTools();
|
|
91
|
+
if (!installResult.installed) {
|
|
92
|
+
ctx.ui.notify(`multica CLI is unavailable: ${installResult.error ?? 'unknown error'}. Run "multica setup" after installing it.`, 'warning');
|
|
93
|
+
ctx.ui.setStatus(STATUS_KEY, `teamwork: ${adapter.name} (not installed)`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!config.multica?.token && !config.multica?.serverUrl) {
|
|
97
|
+
ctx.ui.notify('No multica token or serverUrl configured. Run "multica setup" to authenticate.', 'warning');
|
|
98
|
+
}
|
|
99
|
+
if (config.multica?.serverUrl && !config.multica?.appUrl) {
|
|
100
|
+
ctx.ui.notify('multica serverUrl is set but appUrl is missing. Remote servers require both.', 'warning');
|
|
101
|
+
}
|
|
102
|
+
ctx.ui.setStatus(STATUS_KEY, `teamwork: ${adapter.name}`);
|
|
103
|
+
})().catch((err) => {
|
|
104
|
+
if (generation !== sessionGeneration)
|
|
105
|
+
return;
|
|
106
|
+
ctx.ui.setStatus(STATUS_KEY, `teamwork: multica (error: ${err instanceof Error ? err.message : String(err)})`);
|
|
107
|
+
});
|
|
26
108
|
});
|
|
27
109
|
pi.on('session_shutdown', async () => {
|
|
110
|
+
sessionGeneration++;
|
|
28
111
|
provider = undefined;
|
|
112
|
+
readyPromise = undefined;
|
|
113
|
+
});
|
|
114
|
+
pi.on('before_agent_start', async (event) => {
|
|
115
|
+
if (readyPromise)
|
|
116
|
+
await readyPromise;
|
|
117
|
+
if (!provider)
|
|
118
|
+
return;
|
|
119
|
+
return {
|
|
120
|
+
systemPrompt: event.systemPrompt
|
|
121
|
+
? `${event.systemPrompt}\n\n${TEAMWORK_GUIDANCE}`
|
|
122
|
+
: TEAMWORK_GUIDANCE,
|
|
123
|
+
};
|
|
29
124
|
});
|
|
30
125
|
pi.registerCommand('teamwork-status', {
|
|
31
126
|
description: 'Show teamwork provider status.',
|
|
32
127
|
handler: async (_args, ctx) => {
|
|
128
|
+
if (readyPromise)
|
|
129
|
+
await readyPromise;
|
|
33
130
|
if (!provider) {
|
|
34
131
|
ctx.ui.notify('Teamwork provider is not initialized.', 'warning');
|
|
35
132
|
return;
|
|
@@ -43,172 +140,239 @@ export default function piTeamworkExtension(pi) {
|
|
|
43
140
|
}
|
|
44
141
|
},
|
|
45
142
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
143
|
+
}
|
|
144
|
+
function createTeamworkTools(ensureReady, getProvider) {
|
|
145
|
+
return [
|
|
146
|
+
defineTool({
|
|
147
|
+
name: 'workspace_list',
|
|
148
|
+
label: 'Teamwork',
|
|
149
|
+
description: 'List all workspaces you belong to. Use this to discover or switch workspaces.',
|
|
150
|
+
promptSnippet: 'List workspaces in the shared project tracker.',
|
|
151
|
+
parameters: Type.Object({}),
|
|
152
|
+
async execute() {
|
|
153
|
+
const err = await ensureReady();
|
|
154
|
+
if (err)
|
|
155
|
+
return textResult(err);
|
|
156
|
+
try {
|
|
157
|
+
const workspaces = await getProvider().listWorkspaces();
|
|
158
|
+
if (workspaces.length === 0)
|
|
159
|
+
return textResult('No workspaces found.');
|
|
160
|
+
return textResult(JSON.stringify(workspaces, null, 2));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
57
166
|
}),
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
167
|
+
defineTool({
|
|
168
|
+
name: 'issue_list',
|
|
169
|
+
label: 'Teamwork',
|
|
170
|
+
description: 'List issues from a shared project tracker. Issues are work items that humans or other agents collaborate on. Supports filtering by status, assignee, and project.',
|
|
171
|
+
promptSnippet: 'List issues from a shared project tracker where humans and agents collaborate.',
|
|
172
|
+
parameters: Type.Object({
|
|
173
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
174
|
+
status: Type.Optional(Type.String({ description: 'Filter by status (e.g. todo, in_progress, done, blocked).' })),
|
|
175
|
+
assignee: Type.Optional(Type.String({ description: 'Filter by assignee name.' })),
|
|
176
|
+
project: Type.Optional(Type.String({ description: 'Filter by project ID.' })),
|
|
177
|
+
limit: Type.Optional(Type.Number({ description: 'Max number of results.' })),
|
|
178
|
+
}),
|
|
179
|
+
async execute(_toolCallId, params) {
|
|
180
|
+
const err = await ensureReady();
|
|
181
|
+
if (err)
|
|
182
|
+
return textResult(err);
|
|
183
|
+
try {
|
|
184
|
+
const issues = await getProvider().listIssues(params);
|
|
185
|
+
if (issues.length === 0)
|
|
186
|
+
return textResult('No issues found.');
|
|
187
|
+
return textResult(JSON.stringify(issues, null, 2));
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
191
|
+
}
|
|
192
|
+
},
|
|
78
193
|
}),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
priority: Type.Optional(Type.String({ description: 'Priority (e.g. low, medium, high, urgent).' })),
|
|
102
|
-
assignee: Type.Optional(Type.String({ description: 'Assignee name.' })),
|
|
103
|
-
project: Type.Optional(Type.String({ description: 'Project ID to associate with.' })),
|
|
194
|
+
defineTool({
|
|
195
|
+
name: 'issue_get',
|
|
196
|
+
label: 'Teamwork',
|
|
197
|
+
description: 'Get detailed information about a specific issue (a work item in the shared project tracker).',
|
|
198
|
+
parameters: Type.Object({
|
|
199
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
200
|
+
id: Type.String({ description: 'The issue ID.' }),
|
|
201
|
+
}),
|
|
202
|
+
async execute(_toolCallId, params) {
|
|
203
|
+
const err = await ensureReady();
|
|
204
|
+
if (err)
|
|
205
|
+
return textResult(err);
|
|
206
|
+
try {
|
|
207
|
+
const issue = await getProvider().getIssue(params.id, params.workspaceId);
|
|
208
|
+
if (!issue)
|
|
209
|
+
return textResult(`Issue not found: ${params.id}`);
|
|
210
|
+
return textResult(JSON.stringify(issue, null, 2));
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
214
|
+
}
|
|
215
|
+
},
|
|
104
216
|
}),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
217
|
+
defineTool({
|
|
218
|
+
name: 'issue_create',
|
|
219
|
+
label: 'Teamwork',
|
|
220
|
+
description: 'Create a new issue (a work item / ticket) in the shared project tracker. Use this to file work for humans or other agents to pick up.',
|
|
221
|
+
promptSnippet: 'Create issues / tickets in a shared project tracker for humans or agents to collaborate on.',
|
|
222
|
+
parameters: Type.Object({
|
|
223
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
224
|
+
title: Type.String({ description: 'Issue title.' }),
|
|
225
|
+
description: Type.Optional(Type.String({ description: 'Issue description.' })),
|
|
226
|
+
priority: Type.Optional(Type.String({ description: 'Priority (e.g. low, medium, high, urgent).' })),
|
|
227
|
+
assignee: Type.Optional(Type.String({ description: 'Assignee name.' })),
|
|
228
|
+
project: Type.Optional(Type.String({ description: 'Project ID to associate with.' })),
|
|
229
|
+
}),
|
|
230
|
+
async execute(_toolCallId, params) {
|
|
231
|
+
const err = await ensureReady();
|
|
232
|
+
if (err)
|
|
233
|
+
return textResult(err);
|
|
234
|
+
try {
|
|
235
|
+
const issue = await getProvider().createIssue(params);
|
|
236
|
+
return textResult(JSON.stringify(issue, null, 2));
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
240
|
+
}
|
|
241
|
+
},
|
|
130
242
|
}),
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
243
|
+
defineTool({
|
|
244
|
+
name: 'issue_update',
|
|
245
|
+
label: 'Teamwork',
|
|
246
|
+
description: 'Update an existing issue in the shared project tracker. Can change title, description, status, priority, or assignee.',
|
|
247
|
+
parameters: Type.Object({
|
|
248
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
249
|
+
id: Type.String({ description: 'The issue ID to update.' }),
|
|
250
|
+
title: Type.Optional(Type.String({ description: 'New title.' })),
|
|
251
|
+
description: Type.Optional(Type.String({ description: 'New description.' })),
|
|
252
|
+
status: Type.Optional(Type.String({
|
|
253
|
+
description: 'New status (e.g. todo, in_progress, in_review, done, blocked, cancelled).',
|
|
254
|
+
})),
|
|
255
|
+
priority: Type.Optional(Type.String({ description: 'New priority.' })),
|
|
256
|
+
assignee: Type.Optional(Type.String({ description: 'New assignee name.' })),
|
|
257
|
+
}),
|
|
258
|
+
async execute(_toolCallId, params) {
|
|
259
|
+
const err = await ensureReady();
|
|
260
|
+
if (err)
|
|
261
|
+
return textResult(err);
|
|
262
|
+
const { id, workspaceId, ...input } = params;
|
|
263
|
+
try {
|
|
264
|
+
const issue = await getProvider().updateIssue(id, input, workspaceId);
|
|
265
|
+
if (!issue)
|
|
266
|
+
return textResult(`Issue not found: ${id}`);
|
|
267
|
+
return textResult(JSON.stringify(issue, null, 2));
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
271
|
+
}
|
|
272
|
+
},
|
|
154
273
|
}),
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
274
|
+
defineTool({
|
|
275
|
+
name: 'issue_comment',
|
|
276
|
+
label: 'Teamwork',
|
|
277
|
+
description: 'Add a comment to an issue in the shared project tracker. Use for progress updates, questions, or blockers visible to other collaborators (humans or agents).',
|
|
278
|
+
parameters: Type.Object({
|
|
279
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
280
|
+
issueId: Type.String({ description: 'The issue ID to comment on.' }),
|
|
281
|
+
content: Type.String({ description: 'Comment content.' }),
|
|
282
|
+
parentId: Type.Optional(Type.String({ description: 'Optional parent comment ID for threaded replies.' })),
|
|
283
|
+
}),
|
|
284
|
+
async execute(_toolCallId, params) {
|
|
285
|
+
const err = await ensureReady();
|
|
286
|
+
if (err)
|
|
287
|
+
return textResult(err);
|
|
288
|
+
try {
|
|
289
|
+
const comment = await getProvider().addComment(params.issueId, params.content, params.parentId, params.workspaceId);
|
|
290
|
+
return textResult(JSON.stringify(comment, null, 2));
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
}),
|
|
297
|
+
defineTool({
|
|
298
|
+
name: 'project_list',
|
|
299
|
+
label: 'Teamwork',
|
|
300
|
+
description: 'List all projects in a workspace.',
|
|
301
|
+
parameters: Type.Object({
|
|
302
|
+
workspaceId: WORKSPACE_ID_PARAM,
|
|
303
|
+
}),
|
|
304
|
+
async execute(_toolCallId, params) {
|
|
305
|
+
const err = await ensureReady();
|
|
306
|
+
if (err)
|
|
307
|
+
return textResult(err);
|
|
308
|
+
try {
|
|
309
|
+
const projects = await getProvider().listProjects(params.workspaceId);
|
|
310
|
+
if (projects.length === 0)
|
|
311
|
+
return textResult('No projects found.');
|
|
312
|
+
return textResult(JSON.stringify(projects, null, 2));
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
}),
|
|
319
|
+
defineTool({
|
|
320
|
+
name: 'teamwork_status',
|
|
321
|
+
label: 'Teamwork',
|
|
322
|
+
description: 'Check the status of the teamwork collaboration provider (daemon status, connected agents, etc.).',
|
|
323
|
+
parameters: Type.Object({}),
|
|
324
|
+
async execute() {
|
|
325
|
+
const err = await ensureReady();
|
|
326
|
+
if (err)
|
|
327
|
+
return textResult(err);
|
|
328
|
+
try {
|
|
329
|
+
const s = await getProvider().status();
|
|
330
|
+
return textResult(JSON.stringify(s, null, 2));
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
return textResult(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
}),
|
|
337
|
+
];
|
|
338
|
+
}
|
|
339
|
+
function alignActiveTeamworkTools(pi, supportedToolNames, suspendedToolNames) {
|
|
340
|
+
try {
|
|
341
|
+
const activeToolNames = pi.getActiveTools();
|
|
342
|
+
const nextActiveToolNames = [];
|
|
343
|
+
for (const toolName of activeToolNames) {
|
|
344
|
+
if (!TEAMWORK_TOOL_NAMES.has(toolName) || supportedToolNames.has(toolName)) {
|
|
345
|
+
nextActiveToolNames.push(toolName);
|
|
346
|
+
if (supportedToolNames.has(toolName))
|
|
347
|
+
suspendedToolNames.delete(toolName);
|
|
348
|
+
continue;
|
|
197
349
|
}
|
|
198
|
-
|
|
199
|
-
|
|
350
|
+
suspendedToolNames.add(toolName);
|
|
351
|
+
}
|
|
352
|
+
for (const toolName of TEAMWORK_TOOL_ORDER) {
|
|
353
|
+
if (supportedToolNames.has(toolName) &&
|
|
354
|
+
suspendedToolNames.has(toolName) &&
|
|
355
|
+
!nextActiveToolNames.includes(toolName)) {
|
|
356
|
+
nextActiveToolNames.push(toolName);
|
|
357
|
+
suspendedToolNames.delete(toolName);
|
|
200
358
|
}
|
|
201
|
-
}
|
|
202
|
-
|
|
359
|
+
}
|
|
360
|
+
if (nextActiveToolNames.join('\0') !== activeToolNames.join('\0')) {
|
|
361
|
+
pi.setActiveTools(nextActiveToolNames);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
// Older test harnesses and pre-session runtimes may not expose active tool controls.
|
|
366
|
+
}
|
|
203
367
|
}
|
|
204
368
|
function textResult(text) {
|
|
205
369
|
return { content: [{ type: 'text', text }], details: undefined };
|
|
206
370
|
}
|
|
207
|
-
function loadConfig(cwd) {
|
|
371
|
+
function loadConfig(cwd, projectTrusted = false) {
|
|
208
372
|
try {
|
|
209
373
|
const config = loadPiSettings(SETTINGS_KEY, {
|
|
210
374
|
cwd,
|
|
211
|
-
|
|
375
|
+
projectTrusted,
|
|
212
376
|
});
|
|
213
377
|
return Object.keys(config).length > 0 ? config : {};
|
|
214
378
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAqB,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,mBAAmB,GAAG;IAC1B,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,iBAAiB;CACT,CAAC;AACX,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAC;AAEjE,MAAM,iBAAiB,GAAG;IACxB,qBAAqB;IACrB,qPAAqP;IACrP,EAAE;IACF,uMAAuM;IACvM,EAAE;IACF,6PAA6P;IAC7P,EAAE;IACF,kKAAkK;IAClK,EAAE;IACF,+LAA+L;IAC/L,sBAAsB;CACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CACtC,IAAI,CAAC,MAAM,CAAC;IACV,WAAW,EACT,wFAAwF;CAC3F,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAgB;IAC1D,IAAI,QAAsC,CAAC;IAC3C,IAAI,YAAuC,CAAC;IAC5C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,KAAK,UAAU,WAAW;QACxB,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO,uCAAuC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,SAAS,WAAW;QAClB,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEpE,SAAS,qBAAqB;QAC5B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACjD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACtB,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,wBAAwB,CAAC,EAAE,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IACxE,CAAC;IAED,SAAS,oBAAoB;QAC3B,wBAAwB,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9D,CAAC;IAED,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,EAAE,iBAAiB,CAAC;QACvC,QAAQ,GAAG,SAAS,CAAC;QACrB,YAAY,GAAG,SAAS,CAAC;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC7B,oBAAoB,EAAE,CAAC;YACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC;QAClD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,oBAAoB,EAAE,CAAC;YACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,+BAA+B,YAAY,GAAG,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAW,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7E,CAAC,CAAC;QAEF,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACzF,IAAI,UAAU,KAAK,iBAAiB;gBAAE,OAAO;YAC7C,QAAQ,GAAG,OAAO,CAAC;YACnB,qBAAqB,EAAE,CAAC;YAExB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,+BAA+B,aAAa,CAAC,KAAK,IAAI,eAAe,4CAA4C,EACjH,SAAS,CACV,CAAC;gBACF,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,OAAO,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;gBACzD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,gFAAgF,EAChF,SAAS,CACV,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBACzD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,8EAA8E,EAC9E,SAAS,CACV,CAAC;YACJ,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,UAAU,KAAK,iBAAiB;gBAAE,OAAO;YAC7C,GAAG,CAAC,EAAE,CAAC,SAAS,CACd,UAAU,EACV,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,GAAG,SAAS,CAAC;QACrB,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,YAAY;gBAC9B,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,OAAO,iBAAiB,EAAE;gBACjD,CAAC,CAAC,iBAAiB;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,iBAAiB,EAAE;QACpC,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,YAAY;gBAAE,MAAM,YAAY,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uCAAuC,EAAE,SAAS,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAKD,SAAS,mBAAmB,CAAC,WAA0B,EAAE,WAA0B;IACjF,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,+EAA+E;YAC5F,aAAa,EAAE,gDAAgD;YAC/D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO;gBACX,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC,cAAc,EAAE,CAAC;oBACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,UAAU,CAAC,sBAAsB,CAAC,CAAC;oBACvE,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,mKAAmK;YACrK,aAAa,EACX,gFAAgF;YAClF,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2DAA2D,EAAE,CAAC,CAC1F;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBACjF,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;gBAC7E,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,CAAC;aAC7E,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;oBAC/D,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,8FAA8F;YAChG,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;aAClD,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC1E,IAAI,CAAC,KAAK;wBAAE,OAAO,UAAU,CAAC,oBAAoB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/D,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,uIAAuI;YACzI,aAAa,EACX,6FAA6F;YAC/F,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;gBACnD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAC9E,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC,CAC3E;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,CAAC;aACtF,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACtD,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,uHAAuH;YACzH,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;gBAC3D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;gBAChE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC5E,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC;oBACV,WAAW,EACT,2EAA2E;iBAC9E,CAAC,CACH;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;gBACtE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;aAC5E,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBACtE,IAAI,CAAC,KAAK;wBAAE,OAAO,UAAU,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBACxD,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,8JAA8J;YAChK,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;gBACzD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC,CACjF;aACF,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC,UAAU,CAC5C,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,WAAW,CACnB,CAAC;oBACF,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,mCAAmC;YAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,WAAW,EAAE,kBAAkB;aAChC,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;gBAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;oBACnE,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,UAAU;YACjB,WAAW,EACT,kGAAkG;YACpG,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO;gBACX,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG;oBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,MAAM,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;oBACvC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAgB,EAChB,kBAA+B,EAC/B,kBAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3E,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1E,SAAS;YACX,CAAC;YACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IACE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAChC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAChC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACvC,CAAC;gBACD,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClE,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;IACvF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,cAAc,GAAG,KAAK;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAA0B,YAAY,EAAE;YACnE,GAAG;YACH,cAAc;SACf,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,MAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export type Issue = {
|
|
|
11
11
|
metadata?: Record<string, unknown>;
|
|
12
12
|
};
|
|
13
13
|
export type IssueCreateInput = {
|
|
14
|
+
workspaceId?: string;
|
|
14
15
|
title: string;
|
|
15
16
|
description?: string;
|
|
16
17
|
priority?: string;
|
|
@@ -25,6 +26,7 @@ export type IssueUpdateInput = {
|
|
|
25
26
|
assignee?: string;
|
|
26
27
|
};
|
|
27
28
|
export type IssueListFilter = {
|
|
29
|
+
workspaceId?: string;
|
|
28
30
|
status?: string;
|
|
29
31
|
assignee?: string;
|
|
30
32
|
project?: string;
|
|
@@ -45,15 +47,20 @@ export type Project = {
|
|
|
45
47
|
status?: string;
|
|
46
48
|
lead?: string;
|
|
47
49
|
};
|
|
50
|
+
export type Workspace = {
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
};
|
|
48
54
|
export interface TeamworkProvider {
|
|
49
55
|
name: string;
|
|
56
|
+
listWorkspaces(): Promise<Workspace[]>;
|
|
50
57
|
listIssues(filter?: IssueListFilter): Promise<Issue[]>;
|
|
51
|
-
getIssue(id: string): Promise<Issue | undefined>;
|
|
58
|
+
getIssue(id: string, workspaceId?: string): Promise<Issue | undefined>;
|
|
52
59
|
createIssue(input: IssueCreateInput): Promise<Issue>;
|
|
53
|
-
updateIssue(id: string, input: IssueUpdateInput): Promise<Issue | undefined>;
|
|
54
|
-
addComment(issueId: string, content: string, parentId?: string): Promise<Comment>;
|
|
55
|
-
listComments(issueId: string): Promise<Comment[]>;
|
|
56
|
-
listProjects(): Promise<Project[]>;
|
|
60
|
+
updateIssue(id: string, input: IssueUpdateInput, workspaceId?: string): Promise<Issue | undefined>;
|
|
61
|
+
addComment(issueId: string, content: string, parentId?: string, workspaceId?: string): Promise<Comment>;
|
|
62
|
+
listComments(issueId: string, workspaceId?: string): Promise<Comment[]>;
|
|
63
|
+
listProjects(workspaceId?: string): Promise<Project[]>;
|
|
57
64
|
status(): Promise<Record<string, unknown>>;
|
|
58
65
|
}
|
|
59
66
|
export type ExecFn = (command: string, args: string[]) => Promise<{
|
|
@@ -65,6 +72,9 @@ export type MulticaAdapterConfig = {
|
|
|
65
72
|
binary?: string;
|
|
66
73
|
workspace?: string;
|
|
67
74
|
token?: string;
|
|
75
|
+
autoInstall?: boolean;
|
|
76
|
+
serverUrl?: string;
|
|
77
|
+
appUrl?: string;
|
|
68
78
|
};
|
|
69
79
|
export type TeamworkConfig = {
|
|
70
80
|
enabled?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-teamwork",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
3
|
+
"version": "0.1.2-beta.70",
|
|
4
4
|
"description": "Pi extension for team collaboration and issue management via Multica",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -26,12 +26,14 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"pi": {
|
|
29
|
+
"image": "https://raw.githubusercontent.com/TGYD-helige/pi/master/packages/pi-teamwork/preview.png",
|
|
29
30
|
"extensions": [
|
|
30
31
|
"./dist/index.js"
|
|
31
32
|
]
|
|
32
33
|
},
|
|
33
34
|
"files": [
|
|
34
35
|
"dist",
|
|
36
|
+
"preview.png",
|
|
35
37
|
"README.md"
|
|
36
38
|
],
|
|
37
39
|
"publishConfig": {
|
|
@@ -43,10 +45,10 @@
|
|
|
43
45
|
"directory": "packages/pi-teamwork"
|
|
44
46
|
},
|
|
45
47
|
"dependencies": {
|
|
46
|
-
"@amaster.ai/pi-shared": "0.1.2-beta.
|
|
48
|
+
"@amaster.ai/pi-shared": "0.1.2-beta.70"
|
|
47
49
|
},
|
|
48
50
|
"peerDependencies": {
|
|
49
|
-
"@earendil-works/pi-coding-agent": ">=0.
|
|
51
|
+
"@earendil-works/pi-coding-agent": ">=0.79.1",
|
|
50
52
|
"typebox": "*"
|
|
51
53
|
},
|
|
52
54
|
"peerDependenciesMeta": {
|
|
@@ -58,7 +60,7 @@
|
|
|
58
60
|
}
|
|
59
61
|
},
|
|
60
62
|
"devDependencies": {
|
|
61
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
63
|
+
"@earendil-works/pi-coding-agent": "0.80.10",
|
|
62
64
|
"typebox": "*",
|
|
63
65
|
"vitest": "^4.0.0"
|
|
64
66
|
},
|
package/preview.png
ADDED
|
Binary file
|