@qelos/aidev 0.2.8 → 0.2.11
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/.env.aidev.example +51 -37
- package/CONTRIBUTING.md +78 -78
- package/LICENSE +21 -21
- package/README.md +455 -453
- package/dist/__tests__/ai-runners.test.js +15 -10
- package/dist/__tests__/ai-runners.test.js.map +1 -1
- package/dist/__tests__/init.test.js +122 -1
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/local-provider.test.js +31 -31
- package/dist/__tests__/platform.test.js +235 -20
- package/dist/__tests__/platform.test.js.map +1 -1
- package/dist/__tests__/providers.test.js +413 -21
- package/dist/__tests__/providers.test.js.map +1 -1
- package/dist/__tests__/run.test.js +19 -0
- package/dist/__tests__/run.test.js.map +1 -1
- package/dist/ai/antigravity.d.ts +12 -0
- package/dist/ai/antigravity.d.ts.map +1 -0
- package/dist/ai/antigravity.js +70 -0
- package/dist/ai/antigravity.js.map +1 -0
- package/dist/ai/codex.d.ts +11 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +49 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/windsurf.d.ts +7 -0
- package/dist/ai/windsurf.d.ts.map +1 -1
- package/dist/ai/windsurf.js +205 -58
- package/dist/ai/windsurf.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.js +61 -61
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +11 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +116 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +4 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +155 -117
- package/dist/commands/run.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/github.js +23 -23
- package/dist/platform.d.ts +20 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +74 -3
- package/dist/platform.js.map +1 -1
- package/dist/providers/assets.d.ts +15 -0
- package/dist/providers/assets.d.ts.map +1 -0
- package/dist/providers/assets.js +153 -0
- package/dist/providers/assets.js.map +1 -0
- package/dist/providers/clickup.d.ts +4 -0
- package/dist/providers/clickup.d.ts.map +1 -1
- package/dist/providers/clickup.js +45 -8
- package/dist/providers/clickup.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jira.d.ts +11 -0
- package/dist/providers/jira.d.ts.map +1 -1
- package/dist/providers/jira.js +143 -11
- package/dist/providers/jira.js.map +1 -1
- package/dist/providers/linear.d.ts +19 -0
- package/dist/providers/linear.d.ts.map +1 -0
- package/dist/providers/linear.js +214 -0
- package/dist/providers/linear.js.map +1 -0
- package/dist/providers/monday.d.ts +18 -0
- package/dist/providers/monday.d.ts.map +1 -0
- package/dist/providers/monday.js +185 -0
- package/dist/providers/monday.js.map +1 -0
- package/dist/providers/notion.d.ts +21 -0
- package/dist/providers/notion.d.ts.map +1 -0
- package/dist/providers/notion.js +182 -0
- package/dist/providers/notion.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +50 -50
package/dist/diagnostics.js
CHANGED
|
@@ -12,6 +12,7 @@ const TOOLS_TO_CHECK = [
|
|
|
12
12
|
{ name: 'agent', versionArgs: ['--version'] }, // Cursor Agent CLI; required for cursor runner (install: irm 'https://cursor.com/install?win32=true' | iex on Windows)
|
|
13
13
|
{ name: 'claude', versionArgs: ['--version'] },
|
|
14
14
|
{ name: 'windsurf', versionArgs: ['--version'] },
|
|
15
|
+
{ name: 'docker', versionArgs: ['--version'] }, // Required for windsurf on Windows (headless via windsurfinabox)
|
|
15
16
|
];
|
|
16
17
|
function getToolVersion(name, versionArgs) {
|
|
17
18
|
try {
|
package/dist/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/github.js
CHANGED
|
@@ -82,25 +82,25 @@ function getPrNumberForBranch(branch) {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
function fetchUnresolvedReviewThreads(owner, repo, prNumber) {
|
|
85
|
-
const query = `query($owner: String!, $repo: String!, $prNumber: Int!) {
|
|
86
|
-
repository(owner: $owner, name: $repo) {
|
|
87
|
-
pullRequest(number: $prNumber) {
|
|
88
|
-
reviewThreads(first: 100) {
|
|
89
|
-
nodes {
|
|
90
|
-
id
|
|
91
|
-
isResolved
|
|
92
|
-
path
|
|
93
|
-
line
|
|
94
|
-
comments(first: 50) {
|
|
95
|
-
nodes {
|
|
96
|
-
body
|
|
97
|
-
author { login }
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
85
|
+
const query = `query($owner: String!, $repo: String!, $prNumber: Int!) {
|
|
86
|
+
repository(owner: $owner, name: $repo) {
|
|
87
|
+
pullRequest(number: $prNumber) {
|
|
88
|
+
reviewThreads(first: 100) {
|
|
89
|
+
nodes {
|
|
90
|
+
id
|
|
91
|
+
isResolved
|
|
92
|
+
path
|
|
93
|
+
line
|
|
94
|
+
comments(first: 50) {
|
|
95
|
+
nodes {
|
|
96
|
+
body
|
|
97
|
+
author { login }
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
104
|
}`;
|
|
105
105
|
const result = gh([
|
|
106
106
|
'api', 'graphql',
|
|
@@ -134,10 +134,10 @@ function fetchUnresolvedReviewThreads(owner, repo, prNumber) {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
function resolveReviewThread(threadId) {
|
|
137
|
-
const mutation = `mutation($threadId: ID!) {
|
|
138
|
-
resolveReviewThread(input: { threadId: $threadId }) {
|
|
139
|
-
thread { isResolved }
|
|
140
|
-
}
|
|
137
|
+
const mutation = `mutation($threadId: ID!) {
|
|
138
|
+
resolveReviewThread(input: { threadId: $threadId }) {
|
|
139
|
+
thread { isResolved }
|
|
140
|
+
}
|
|
141
141
|
}`;
|
|
142
142
|
const result = gh([
|
|
143
143
|
'api', 'graphql',
|
package/dist/platform.d.ts
CHANGED
|
@@ -7,10 +7,28 @@ export declare const isWindows: boolean;
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function findBin(name: string): string | null;
|
|
9
9
|
export declare function commandExists(name: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Parses an npm-generated .cmd shim to extract the target Node.js script path.
|
|
12
|
+
* npm shims contain a line like:
|
|
13
|
+
* "%_prog%" "%dp0%\node_modules\...\cli.js" %*
|
|
14
|
+
* or:
|
|
15
|
+
* "%~dp0\node_modules\...\cli.js" %*
|
|
16
|
+
*
|
|
17
|
+
* Returns the resolved absolute path to the .js entry point, or null if the
|
|
18
|
+
* shim format is unrecognised or the script doesn't exist on disk.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseCmdShimTarget(cmdPath: string): string | null;
|
|
10
21
|
/**
|
|
11
22
|
* Detects whether a resolved binary path is a Windows .cmd/.bat shim and
|
|
12
|
-
* returns adjusted spawn arguments that
|
|
13
|
-
*
|
|
23
|
+
* returns adjusted spawn arguments that bypass cmd.exe.
|
|
24
|
+
*
|
|
25
|
+
* First tries to parse the .cmd shim to find the underlying Node.js script
|
|
26
|
+
* so we can spawn `node.exe <script> <args>` directly. This avoids cmd.exe's
|
|
27
|
+
* broken stdin forwarding and its mangling of shell metacharacters in
|
|
28
|
+
* arguments (which breaks AI prompts containing &, |, <, >, ", % etc.).
|
|
29
|
+
*
|
|
30
|
+
* Falls back to `cmd.exe /c` only when the shim can't be parsed.
|
|
31
|
+
* Returns null when no adjustment is needed (non-.cmd binary).
|
|
14
32
|
*/
|
|
15
33
|
export declare function resolveWindowsCmd(resolvedPath: string | null, args: string[]): {
|
|
16
34
|
bin: string;
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,eAAO,MAAM,SAAS,SAA+B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,eAAO,MAAM,SAAS,SAA+B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAaxC;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,kCAAkC,GAC1C,gBAAgB,CAAC,MAAM,CAAC,CAc1B;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,UAAU,CAyBnD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C"}
|
package/dist/platform.js
CHANGED
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.isWindows = void 0;
|
|
37
37
|
exports.findBin = findBin;
|
|
38
38
|
exports.commandExists = commandExists;
|
|
39
|
+
exports.parseCmdShimTarget = parseCmdShimTarget;
|
|
39
40
|
exports.resolveWindowsCmd = resolveWindowsCmd;
|
|
40
41
|
exports.spawnCommand = spawnCommand;
|
|
41
42
|
exports.getUserShellEnv = getUserShellEnv;
|
|
@@ -86,17 +87,85 @@ function findBin(name) {
|
|
|
86
87
|
function commandExists(name) {
|
|
87
88
|
return findBin(name) !== null;
|
|
88
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Parses an npm-generated .cmd shim to extract the target Node.js script path.
|
|
92
|
+
* npm shims contain a line like:
|
|
93
|
+
* "%_prog%" "%dp0%\node_modules\...\cli.js" %*
|
|
94
|
+
* or:
|
|
95
|
+
* "%~dp0\node_modules\...\cli.js" %*
|
|
96
|
+
*
|
|
97
|
+
* Returns the resolved absolute path to the .js entry point, or null if the
|
|
98
|
+
* shim format is unrecognised or the script doesn't exist on disk.
|
|
99
|
+
*/
|
|
100
|
+
function parseCmdShimTarget(cmdPath) {
|
|
101
|
+
try {
|
|
102
|
+
const content = fs.readFileSync(cmdPath, 'utf8');
|
|
103
|
+
const dir = path.dirname(cmdPath);
|
|
104
|
+
// Match: "%dp0%\path\to\script.js" or "%~dp0\path\to\script.js"
|
|
105
|
+
// Note: %~dp0 has no closing % (it's a batch parameter modifier), while
|
|
106
|
+
// %dp0% is a regular env var set earlier in the shim.
|
|
107
|
+
const dpMatch = content.match(/%(?:~dp0|dp0%)[\\\/]([^"]+\.(?:js|mjs|cjs))/i);
|
|
108
|
+
if (dpMatch) {
|
|
109
|
+
const scriptPath = path.resolve(dir, dpMatch[1]);
|
|
110
|
+
if (fs.existsSync(scriptPath))
|
|
111
|
+
return scriptPath;
|
|
112
|
+
}
|
|
113
|
+
// Fallback: look for a bare node_modules script path on the last executable line
|
|
114
|
+
const lines = content.split(/\r?\n/);
|
|
115
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
116
|
+
const m = lines[i].match(/"([^"]+node_modules[\\\/][^"]+\.(?:js|mjs|cjs))"/i);
|
|
117
|
+
if (m) {
|
|
118
|
+
const candidate = path.isAbsolute(m[1]) ? m[1] : path.resolve(dir, m[1]);
|
|
119
|
+
if (fs.existsSync(candidate))
|
|
120
|
+
return candidate;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
89
129
|
/**
|
|
90
130
|
* Detects whether a resolved binary path is a Windows .cmd/.bat shim and
|
|
91
|
-
* returns adjusted spawn arguments that
|
|
92
|
-
*
|
|
131
|
+
* returns adjusted spawn arguments that bypass cmd.exe.
|
|
132
|
+
*
|
|
133
|
+
* First tries to parse the .cmd shim to find the underlying Node.js script
|
|
134
|
+
* so we can spawn `node.exe <script> <args>` directly. This avoids cmd.exe's
|
|
135
|
+
* broken stdin forwarding and its mangling of shell metacharacters in
|
|
136
|
+
* arguments (which breaks AI prompts containing &, |, <, >, ", % etc.).
|
|
137
|
+
*
|
|
138
|
+
* Falls back to `cmd.exe /c` only when the shim can't be parsed.
|
|
139
|
+
* Returns null when no adjustment is needed (non-.cmd binary).
|
|
93
140
|
*/
|
|
94
141
|
function resolveWindowsCmd(resolvedPath, args) {
|
|
95
142
|
if (!resolvedPath || !/\.(cmd|bat)$/i.test(resolvedPath))
|
|
96
143
|
return null;
|
|
144
|
+
const scriptTarget = parseCmdShimTarget(resolvedPath);
|
|
145
|
+
if (scriptTarget) {
|
|
146
|
+
// Spawn node.exe directly — no cmd.exe involved
|
|
147
|
+
const nodeExe = findNodeForCmd(path.dirname(resolvedPath));
|
|
148
|
+
return { bin: nodeExe, args: [scriptTarget, ...args] };
|
|
149
|
+
}
|
|
150
|
+
// Fallback: route through cmd.exe (non-npm shims, custom .bat files, etc.)
|
|
97
151
|
const comspec = process.env.ComSpec || 'cmd.exe';
|
|
98
152
|
return { bin: comspec, args: ['/c', resolvedPath, ...args] };
|
|
99
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Returns the Node.js executable to use for a .cmd shim directory.
|
|
156
|
+
* Prefers a local node.exe next to the shim (e.g. nvm/volta shims),
|
|
157
|
+
* then falls back to the currently running node.
|
|
158
|
+
*/
|
|
159
|
+
function findNodeForCmd(cmdDir) {
|
|
160
|
+
const local = path.join(cmdDir, 'node.exe');
|
|
161
|
+
try {
|
|
162
|
+
fs.accessSync(local, fs.constants.F_OK);
|
|
163
|
+
return local;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return process.execPath;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
100
169
|
/**
|
|
101
170
|
* Cross-platform `spawnSync` wrapper.
|
|
102
171
|
* On Windows, .cmd/.bat shims (common for npm-installed CLIs like cursor,
|
|
@@ -110,7 +179,9 @@ function spawnCommand(command, args, options) {
|
|
|
110
179
|
if (!exports.isWindows) {
|
|
111
180
|
return (0, node_child_process_1.spawnSync)(command, args, options);
|
|
112
181
|
}
|
|
113
|
-
|
|
182
|
+
// If `command` is already an absolute/relative path to a .cmd/.bat, use it
|
|
183
|
+
// directly; otherwise search PATH via findBin.
|
|
184
|
+
const resolved = /\.(cmd|bat)$/i.test(command) ? command : findBin(command);
|
|
114
185
|
const winCmd = resolveWindowsCmd(resolved, args);
|
|
115
186
|
if (winCmd) {
|
|
116
187
|
return (0, node_child_process_1.spawnSync)(winCmd.bin, winCmd.args, options);
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,0BAiCC;AAED,sCAEC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,0BAiCC;AAED,sCAEC;AAYD,gDA4BC;AAcD,8CAgBC;AA0BD,oCAkBC;AAUD,0CAyBC;AAOD,8CAIC;AAjND,4CAA8B;AAC9B,gDAAkC;AAClC,2DAA+C;AAGlC,QAAA,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAEtD;;;;GAIG;AACH,SAAgB,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,iBAAS;QACpB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAET,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,iBAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC5C,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;aACpC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACjE,IAAI,SAAS;oBAAE,OAAO,SAAS,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,kEAAkE;QAClE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,OAAO,UAAU,CAAC;QACnD,CAAC;QAED,iFAAiF;QACjF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAC9E,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAC/B,YAA2B,EAC3B,IAAc;IAEd,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtE,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,gDAAgD;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IACjD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,IAAc,EACd,OAA2C;IAE3C,IAAI,CAAC,iBAAS,EAAE,CAAC;QACf,OAAO,IAAA,8BAAS,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,2EAA2E;IAC3E,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAA,8BAAS,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAA,8BAAS,EAAC,QAAQ,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,cAA6C,CAAC;AAElD;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,IAAI,iBAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IAClC,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAExD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;YACtD,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAsB,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,GAAG,GAAG,CAAC;oBAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,wEAAwE;YACxE,cAAc,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,uBAAuB,EAAE,CAAC;IACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,sBAAsB,EAAE,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,qBAAqB,EAAE;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,oBAAoB,EAAE;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB;IAC5B,uDAAuD;IACvD,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,IAAA,8BAAS,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;QAC3F,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvE,IAAI,KAAK;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAA,8BAAS,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;QAChG,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACxE,IAAI,KAAK;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB;IAC3B,oEAAoE;IACpE,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;QAClE,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,oDAAoD,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,UAAU,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE;QACtF,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface NativeAttachment {
|
|
2
|
+
id?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
url?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DownloadedAttachment {
|
|
7
|
+
id?: string;
|
|
8
|
+
name: string;
|
|
9
|
+
path: string;
|
|
10
|
+
sourceUrl: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function appendAttachmentPaths(text: string, attachments: DownloadedAttachment[], heading?: string): string;
|
|
13
|
+
export declare function downloadAttachments(taskId: string, attachments: NativeAttachment[], requestInit?: RequestInit): Promise<DownloadedAttachment[]>;
|
|
14
|
+
export declare function normalizeAttachmentUrl(url: string): string;
|
|
15
|
+
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/providers/assets.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,oBAAoB,EAAE,EACnC,OAAO,SAAoD,GAC1D,MAAM,CAOR;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAAE,EAC/B,WAAW,GAAE,WAAgB,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAsDjC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO1D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.appendAttachmentPaths = appendAttachmentPaths;
|
|
37
|
+
exports.downloadAttachments = downloadAttachments;
|
|
38
|
+
exports.normalizeAttachmentUrl = normalizeAttachmentUrl;
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const path = __importStar(require("node:path"));
|
|
41
|
+
const logger_1 = require("../logger");
|
|
42
|
+
const INVALID_PATH_CHARS = /[<>:"/\\|?*\x00-\x1f]/g;
|
|
43
|
+
function appendAttachmentPaths(text, attachments, heading = 'Local asset files (read/use these if relevant):') {
|
|
44
|
+
if (attachments.length === 0)
|
|
45
|
+
return text;
|
|
46
|
+
const uniquePaths = Array.from(new Set(attachments.map((attachment) => attachment.path)));
|
|
47
|
+
const section = [heading, ...uniquePaths.map((filePath) => `- \`${filePath}\``)].join('\n');
|
|
48
|
+
const trimmed = text.trimEnd();
|
|
49
|
+
return trimmed ? `${trimmed}\n\n${section}` : section;
|
|
50
|
+
}
|
|
51
|
+
async function downloadAttachments(taskId, attachments, requestInit = {}) {
|
|
52
|
+
if (attachments.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
const assetDir = path.join(process.cwd(), '.aidev', 'assets', sanitizePathSegment(taskId));
|
|
55
|
+
fs.mkdirSync(assetDir, { recursive: true });
|
|
56
|
+
const usedNames = new Set();
|
|
57
|
+
const downloaded = [];
|
|
58
|
+
for (const attachment of attachments) {
|
|
59
|
+
if (!attachment.url)
|
|
60
|
+
continue;
|
|
61
|
+
const storedName = buildStoredFileName(attachment, usedNames);
|
|
62
|
+
const destination = path.join(assetDir, storedName);
|
|
63
|
+
if (fs.existsSync(destination)) {
|
|
64
|
+
downloaded.push({
|
|
65
|
+
id: attachment.id,
|
|
66
|
+
name: storedName,
|
|
67
|
+
path: toRelativeAssetPath(destination),
|
|
68
|
+
sourceUrl: attachment.url,
|
|
69
|
+
});
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const response = await fetch(attachment.url, {
|
|
74
|
+
...requestInit,
|
|
75
|
+
redirect: 'follow',
|
|
76
|
+
});
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
logger_1.logger.warn(`Failed to download attachment "${storedName}" for task ${taskId}: ${response.status} ${response.statusText}`);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
82
|
+
fs.writeFileSync(destination, buffer);
|
|
83
|
+
downloaded.push({
|
|
84
|
+
id: attachment.id,
|
|
85
|
+
name: storedName,
|
|
86
|
+
path: toRelativeAssetPath(destination),
|
|
87
|
+
sourceUrl: attachment.url,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
logger_1.logger.warn(`Failed to download attachment "${storedName}" for task ${taskId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return downloaded;
|
|
95
|
+
}
|
|
96
|
+
function normalizeAttachmentUrl(url) {
|
|
97
|
+
try {
|
|
98
|
+
const parsed = new URL(url);
|
|
99
|
+
return `${parsed.origin}${parsed.pathname}`.toLowerCase();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return url.trim().toLowerCase();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function buildStoredFileName(attachment, usedNames) {
|
|
106
|
+
const fileName = sanitizeFileName(resolveAttachmentName(attachment));
|
|
107
|
+
const withPrefix = attachment.id
|
|
108
|
+
? `${sanitizePathSegment(attachment.id)}-${fileName}`
|
|
109
|
+
: fileName;
|
|
110
|
+
let candidate = withPrefix;
|
|
111
|
+
let counter = 2;
|
|
112
|
+
while (usedNames.has(candidate)) {
|
|
113
|
+
const parsed = path.parse(withPrefix);
|
|
114
|
+
candidate = `${parsed.name}-${counter}${parsed.ext}`;
|
|
115
|
+
counter += 1;
|
|
116
|
+
}
|
|
117
|
+
usedNames.add(candidate);
|
|
118
|
+
return candidate;
|
|
119
|
+
}
|
|
120
|
+
function resolveAttachmentName(attachment) {
|
|
121
|
+
if (attachment.name)
|
|
122
|
+
return attachment.name;
|
|
123
|
+
if (attachment.url) {
|
|
124
|
+
try {
|
|
125
|
+
const parsed = new URL(attachment.url);
|
|
126
|
+
const base = path.posix.basename(parsed.pathname);
|
|
127
|
+
if (base)
|
|
128
|
+
return base;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Fall through to the default name below.
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return 'attachment';
|
|
135
|
+
}
|
|
136
|
+
function sanitizeFileName(fileName) {
|
|
137
|
+
const parsed = path.parse(fileName);
|
|
138
|
+
const safeBase = sanitizePathSegment(parsed.name || 'attachment');
|
|
139
|
+
const safeExt = parsed.ext.replace(INVALID_PATH_CHARS, '');
|
|
140
|
+
return `${safeBase}${safeExt}`;
|
|
141
|
+
}
|
|
142
|
+
function sanitizePathSegment(value) {
|
|
143
|
+
const sanitized = value
|
|
144
|
+
.replace(INVALID_PATH_CHARS, '-')
|
|
145
|
+
.replace(/\s+/g, '-')
|
|
146
|
+
.replace(/-+/g, '-')
|
|
147
|
+
.replace(/^-|-$/g, '');
|
|
148
|
+
return sanitized || 'attachment';
|
|
149
|
+
}
|
|
150
|
+
function toRelativeAssetPath(filePath) {
|
|
151
|
+
return path.relative(process.cwd(), filePath).split(path.sep).join('/');
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/providers/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,12 @@ export declare class ClickUpProvider implements TaskProvider {
|
|
|
6
6
|
private tag;
|
|
7
7
|
private assigneeTag;
|
|
8
8
|
private listId;
|
|
9
|
+
private pendingStatus;
|
|
10
|
+
private openStatus;
|
|
9
11
|
constructor(config: Config);
|
|
10
12
|
private request;
|
|
13
|
+
private buildAuthHeaders;
|
|
14
|
+
private fetchTaskAttachments;
|
|
11
15
|
fetchTasks(): Promise<Task[]>;
|
|
12
16
|
postComment(taskId: string, text: string): Promise<void>;
|
|
13
17
|
getComments(taskId: string): Promise<Comment[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickup.d.ts","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"clickup.d.ts","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM;YAUZ,OAAO;IA4CrB,OAAO,CAAC,gBAAgB;YAOV,oBAAoB;IAyB5B,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAkD7B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA6C/C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+BtE"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClickUpProvider = void 0;
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
|
+
const assets_1 = require("./assets");
|
|
5
6
|
class ClickUpProvider {
|
|
6
7
|
constructor(config) {
|
|
7
8
|
this.apiKey = config.clickupApiKey;
|
|
@@ -9,6 +10,8 @@ class ClickUpProvider {
|
|
|
9
10
|
this.tag = config.clickupTag;
|
|
10
11
|
this.assigneeTag = config.assigneeTag;
|
|
11
12
|
this.listId = config.clickupListId;
|
|
13
|
+
this.pendingStatus = config.clickupPendingStatus || 'pending';
|
|
14
|
+
this.openStatus = config.clickupOpenStatus || 'open';
|
|
12
15
|
}
|
|
13
16
|
async request(path, options = {}) {
|
|
14
17
|
const url = `https://api.clickup.com/api/v2${path}`;
|
|
@@ -48,17 +51,51 @@ class ClickUpProvider {
|
|
|
48
51
|
}
|
|
49
52
|
throw lastError;
|
|
50
53
|
}
|
|
54
|
+
buildAuthHeaders() {
|
|
55
|
+
return {
|
|
56
|
+
Authorization: this.apiKey,
|
|
57
|
+
Accept: '*/*',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async fetchTaskAttachments(taskId) {
|
|
61
|
+
const detail = await this.request(`/task/${taskId}`);
|
|
62
|
+
const attachments = (detail.attachments || [])
|
|
63
|
+
.filter((attachment) => Boolean(attachment.url))
|
|
64
|
+
.map((attachment) => ({
|
|
65
|
+
id: attachment.id !== undefined ? String(attachment.id) : undefined,
|
|
66
|
+
name: attachment.title,
|
|
67
|
+
url: attachment.url,
|
|
68
|
+
}));
|
|
69
|
+
return (0, assets_1.downloadAttachments)(taskId, attachments, {
|
|
70
|
+
headers: this.buildAuthHeaders(),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
51
73
|
async fetchTasks() {
|
|
52
74
|
logger_1.logger.debug(`Fetching tasks with tag "${this.tag}" from team ${this.teamId}`);
|
|
53
75
|
const data = await this.request(`/team/${this.teamId}/task?tags[]=${encodeURIComponent(this.tag)}&subtasks=true&include_closed=false`);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
status
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
76
|
+
const pendingStatus = this.pendingStatus.toLowerCase();
|
|
77
|
+
const openStatus = this.openStatus.toLowerCase();
|
|
78
|
+
const eligibleTasks = data.tasks.filter((t) => {
|
|
79
|
+
const status = t.status.status.toLowerCase();
|
|
80
|
+
return status === openStatus || status === pendingStatus;
|
|
81
|
+
});
|
|
82
|
+
return Promise.all(eligibleTasks.map(async (t) => {
|
|
83
|
+
let attachments = [];
|
|
84
|
+
try {
|
|
85
|
+
attachments = await this.fetchTaskAttachments(t.id);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
logger_1.logger.warn(`[${t.id}] Failed to fetch ClickUp attachments: ${err instanceof Error ? err.message : String(err)}`);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
id: t.id,
|
|
92
|
+
name: t.name,
|
|
93
|
+
description: (0, assets_1.appendAttachmentPaths)(t.description || '', attachments),
|
|
94
|
+
status: t.status.status.toLowerCase(),
|
|
95
|
+
url: t.url,
|
|
96
|
+
tags: t.tags.map((tag) => tag.name),
|
|
97
|
+
priority: t.priority ? parseInt(t.priority.id, 10) : undefined,
|
|
98
|
+
};
|
|
62
99
|
}));
|
|
63
100
|
}
|
|
64
101
|
async postComment(taskId, text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickup.js","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":";;;AAEA,sCAAmC;
|
|
1
|
+
{"version":3,"file":"clickup.js","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAmB5E;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -3,15 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createProvider = createProvider;
|
|
4
4
|
const clickup_1 = require("./clickup");
|
|
5
5
|
const jira_1 = require("./jira");
|
|
6
|
+
const linear_1 = require("./linear");
|
|
6
7
|
const local_1 = require("./local");
|
|
8
|
+
const monday_1 = require("./monday");
|
|
7
9
|
function createProvider(config, mode) {
|
|
8
10
|
switch (config.provider.toLowerCase()) {
|
|
9
11
|
case 'clickup':
|
|
10
12
|
return new clickup_1.ClickUpProvider(config);
|
|
11
13
|
case 'jira':
|
|
12
14
|
return new jira_1.JiraProvider(config);
|
|
15
|
+
case 'linear':
|
|
16
|
+
return new linear_1.LinearProvider(config);
|
|
13
17
|
case 'local':
|
|
14
18
|
return new local_1.LocalProvider(process.cwd(), mode || 'code');
|
|
19
|
+
case 'monday':
|
|
20
|
+
return new monday_1.MondayProvider(config);
|
|
15
21
|
case 'notion':
|
|
16
22
|
throw new Error('Notion provider is not yet implemented. Contributions welcome!');
|
|
17
23
|
case 'trello':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;AAQA,wCAmBC;AAzBD,uCAA4C;AAC5C,iCAAsC;AACtC,qCAA0C;AAC1C,mCAAkD;AAClD,qCAA0C;AAE1C,SAAgB,cAAc,CAAC,MAAc,EAAE,IAAe;IAC5D,QAAQ,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,IAAI,mBAAY,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,IAAI,qBAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
package/dist/providers/jira.d.ts
CHANGED
|
@@ -8,8 +8,19 @@ export declare class JiraProvider implements TaskProvider {
|
|
|
8
8
|
private assigneeTag;
|
|
9
9
|
constructor(config: Config);
|
|
10
10
|
private request;
|
|
11
|
+
private buildAuthHeaders;
|
|
11
12
|
/** Extract plain text from an Atlassian Document Format node. */
|
|
12
13
|
private adfToText;
|
|
14
|
+
private adfToTextNode;
|
|
15
|
+
private normalizeAdfText;
|
|
16
|
+
private downloadIssueAttachments;
|
|
17
|
+
private fetchIssueAttachments;
|
|
18
|
+
private collectAttachmentReferences;
|
|
19
|
+
private resolveCommentAttachments;
|
|
20
|
+
private findAttachmentForReference;
|
|
21
|
+
private toAbsoluteUrl;
|
|
22
|
+
private extractAttachmentId;
|
|
23
|
+
private asRecord;
|
|
13
24
|
fetchTasks(): Promise<Task[]>;
|
|
14
25
|
postComment(taskId: string, text: string): Promise<void>;
|
|
15
26
|
getComments(taskId: string): Promise<Comment[]>;
|