shortcutxl 0.2.12 → 0.2.13
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 +26 -26
- package/agent-docs/README.md +397 -397
- package/agent-docs/docs/compaction.md +390 -390
- package/agent-docs/docs/custom-provider.md +580 -580
- package/agent-docs/docs/extensions.md +1971 -1971
- package/agent-docs/docs/packages.md +209 -209
- package/agent-docs/docs/rpc.md +1317 -1317
- package/agent-docs/docs/sdk.md +962 -962
- package/agent-docs/docs/session.md +412 -412
- package/agent-docs/docs/termux.md +127 -127
- package/agent-docs/docs/tui.md +887 -887
- package/agent-docs/examples/README.md +25 -25
- package/agent-docs/examples/extensions/README.md +205 -205
- package/agent-docs/examples/extensions/antigravity-image-gen.ts +447 -447
- package/agent-docs/examples/extensions/auto-commit-on-exit.ts +49 -49
- package/agent-docs/examples/extensions/bash-spawn-hook.ts +30 -30
- package/agent-docs/examples/extensions/bookmark.ts +50 -50
- package/agent-docs/examples/extensions/built-in-tool-renderer.ts +256 -256
- package/agent-docs/examples/extensions/claude-rules.ts +86 -86
- package/agent-docs/examples/extensions/commands.ts +75 -75
- package/agent-docs/examples/extensions/confirm-destructive.ts +59 -59
- package/agent-docs/examples/extensions/custom-compaction.ts +126 -126
- package/agent-docs/examples/extensions/custom-footer.ts +63 -63
- package/agent-docs/examples/extensions/custom-header.ts +73 -73
- package/agent-docs/examples/extensions/custom-provider-anthropic/index.ts +660 -660
- package/agent-docs/examples/extensions/custom-provider-gitlab-duo/index.ts +362 -362
- package/agent-docs/examples/extensions/custom-provider-gitlab-duo/test.ts +88 -88
- package/agent-docs/examples/extensions/custom-provider-qwen-cli/index.ts +349 -349
- package/agent-docs/examples/extensions/dirty-repo-guard.ts +56 -56
- package/agent-docs/examples/extensions/doom-overlay/doom-component.ts +133 -133
- package/agent-docs/examples/extensions/doom-overlay/doom-keys.ts +108 -108
- package/agent-docs/examples/extensions/doom-overlay/index.ts +74 -74
- package/agent-docs/examples/extensions/dynamic-resources/index.ts +15 -15
- package/agent-docs/examples/extensions/dynamic-tools.ts +77 -77
- package/agent-docs/examples/extensions/event-bus.ts +43 -43
- package/agent-docs/examples/extensions/file-trigger.ts +41 -41
- package/agent-docs/examples/extensions/git-checkpoint.ts +53 -53
- package/agent-docs/examples/extensions/handoff.ts +155 -155
- package/agent-docs/examples/extensions/hello.ts +25 -25
- package/agent-docs/examples/extensions/inline-bash.ts +94 -94
- package/agent-docs/examples/extensions/input-transform.ts +43 -43
- package/agent-docs/examples/extensions/interactive-shell.ts +209 -209
- package/agent-docs/examples/extensions/mac-system-theme.ts +47 -47
- package/agent-docs/examples/extensions/message-renderer.ts +59 -59
- package/agent-docs/examples/extensions/minimal-mode.ts +430 -430
- package/agent-docs/examples/extensions/modal-editor.ts +90 -90
- package/agent-docs/examples/extensions/model-status.ts +31 -31
- package/agent-docs/examples/extensions/notify.ts +55 -55
- package/agent-docs/examples/extensions/overlay-qa-tests.ts +936 -936
- package/agent-docs/examples/extensions/overlay-test.ts +159 -159
- package/agent-docs/examples/extensions/permission-gate.ts +37 -37
- package/agent-docs/examples/extensions/pirate.ts +47 -47
- package/agent-docs/examples/extensions/plan-mode/index.ts +363 -363
- package/agent-docs/examples/extensions/preset.ts +418 -418
- package/agent-docs/examples/extensions/protected-paths.ts +30 -30
- package/agent-docs/examples/extensions/qna.ts +122 -122
- package/agent-docs/examples/extensions/question.ts +278 -278
- package/agent-docs/examples/extensions/questionnaire.ts +440 -440
- package/agent-docs/examples/extensions/rainbow-editor.ts +90 -90
- package/agent-docs/examples/extensions/reload-runtime.ts +37 -37
- package/agent-docs/examples/extensions/rpc-demo.ts +124 -124
- package/agent-docs/examples/extensions/sandbox/index.ts +324 -324
- package/agent-docs/examples/extensions/send-user-message.ts +97 -97
- package/agent-docs/examples/extensions/session-name.ts +27 -27
- package/agent-docs/examples/extensions/shutdown-command.ts +69 -69
- package/agent-docs/examples/extensions/snake.ts +343 -343
- package/agent-docs/examples/extensions/space-invaders.ts +566 -566
- package/agent-docs/examples/extensions/ssh.ts +233 -233
- package/agent-docs/examples/extensions/status-line.ts +40 -40
- package/agent-docs/examples/extensions/subagent/agents.ts +130 -130
- package/agent-docs/examples/extensions/subagent/index.ts +1068 -1068
- package/agent-docs/examples/extensions/summarize.ts +206 -206
- package/agent-docs/examples/extensions/system-prompt-header.ts +17 -17
- package/agent-docs/examples/extensions/timed-confirm.ts +72 -72
- package/agent-docs/examples/extensions/titlebar-spinner.ts +58 -58
- package/agent-docs/examples/extensions/todo.ts +314 -314
- package/agent-docs/examples/extensions/tool-override.ts +146 -146
- package/agent-docs/examples/extensions/tools.ts +145 -145
- package/agent-docs/examples/extensions/trigger-compact.ts +40 -40
- package/agent-docs/examples/extensions/truncated-tool.ts +194 -194
- package/agent-docs/examples/extensions/widget-placement.ts +17 -17
- package/agent-docs/examples/extensions/with-deps/index.ts +37 -37
- package/agent-docs/examples/rpc-extension-ui.ts +654 -654
- package/agent-docs/examples/sdk/01-minimal.ts +22 -22
- package/agent-docs/examples/sdk/02-custom-model.ts +48 -48
- package/agent-docs/examples/sdk/03-custom-prompt.ts +55 -55
- package/agent-docs/examples/sdk/04-skills.ts +53 -53
- package/agent-docs/examples/sdk/05-tools.ts +56 -56
- package/agent-docs/examples/sdk/06-extensions.ts +88 -88
- package/agent-docs/examples/sdk/07-context-files.ts +40 -40
- package/agent-docs/examples/sdk/08-prompt-templates.ts +47 -47
- package/agent-docs/examples/sdk/09-api-keys-and-oauth.ts +48 -48
- package/agent-docs/examples/sdk/10-settings.ts +54 -54
- package/agent-docs/examples/sdk/11-sessions.ts +48 -48
- package/agent-docs/examples/sdk/12-full-control.ts +82 -82
- package/agent-docs/examples/sdk/README.md +144 -144
- package/agent-docs/xll-spec.md +110 -110
- package/dist/core/auth-storage.js +21 -2
- package/package.json +1 -1
- package/xll/ShortcutXL.xll +0 -0
- package/xll/modules/debug_render.py +272 -272
- package/xll/modules/gameboy.py +241 -241
- package/xll/modules/pong.py +188 -188
- package/xll/modules/shortcut_xl/_diff_highlight.py +176 -0
- package/xll/modules/shortcut_xl/_log.py +12 -12
- package/xll/modules/shortcut_xl/_registry.py +44 -44
- package/xll/modules/stocks.py +100 -100
- /package/skills/{com-advanced-api → COM-advanced-api}/SKILL.md +0 -0
- /package/skills/{com-advanced-api → COM-advanced-api}/excel-type-library.py +0 -0
- /package/skills/{com-advanced-api → COM-advanced-api}/office-type-library.py +0 -0
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test script for GitLab Duo extension
|
|
3
|
-
* Run: npx tsx test.ts [model-id] [--thinking]
|
|
4
|
-
*
|
|
5
|
-
* Examples:
|
|
6
|
-
* npx tsx test.ts # Test default (claude-sonnet-4-5-20250929)
|
|
7
|
-
* npx tsx test.ts gpt-5-codex # Test GPT-5 Codex
|
|
8
|
-
* npx tsx test.ts claude-sonnet-4-5-20250929 --thinking
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { readFileSync } from 'fs';
|
|
12
|
-
import { homedir } from 'os';
|
|
13
|
-
import { join } from 'path';
|
|
14
|
-
import {
|
|
15
|
-
type Api,
|
|
16
|
-
type Context,
|
|
17
|
-
type Model,
|
|
18
|
-
registerApiProvider,
|
|
19
|
-
streamSimple
|
|
20
|
-
} from 'shortcutxl';
|
|
21
|
-
import { MODELS, streamGitLabDuo } from './index.js';
|
|
22
|
-
|
|
23
|
-
const MODEL_MAP = new Map(MODELS.map((m) => [m.id, m]));
|
|
24
|
-
|
|
25
|
-
async function main() {
|
|
26
|
-
const modelId = process.argv[2] || 'claude-sonnet-4-5-20250929';
|
|
27
|
-
const useThinking = process.argv.includes('--thinking');
|
|
28
|
-
|
|
29
|
-
const cfg = MODEL_MAP.get(modelId);
|
|
30
|
-
if (!cfg) {
|
|
31
|
-
console.error(`Unknown model: ${modelId}`);
|
|
32
|
-
console.error('Available:', MODELS.map((m) => m.id).join(', '));
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Read auth
|
|
37
|
-
const authPath = join(homedir(), '.shortcut', 'agent', 'auth.json');
|
|
38
|
-
const authData = JSON.parse(readFileSync(authPath, 'utf-8'));
|
|
39
|
-
const gitlabCred = authData['gitlab-duo'];
|
|
40
|
-
if (!gitlabCred?.access) {
|
|
41
|
-
console.error('No gitlab-duo credentials. Run /login gitlab-duo first.');
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Register provider
|
|
46
|
-
registerApiProvider({
|
|
47
|
-
api: 'gitlab-duo-api' as Api,
|
|
48
|
-
stream: streamGitLabDuo,
|
|
49
|
-
streamSimple: streamGitLabDuo
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// Create model
|
|
53
|
-
const model: Model<Api> = {
|
|
54
|
-
id: cfg.id,
|
|
55
|
-
name: cfg.name,
|
|
56
|
-
api: 'gitlab-duo-api' as Api,
|
|
57
|
-
provider: 'gitlab-duo',
|
|
58
|
-
baseUrl: cfg.baseUrl,
|
|
59
|
-
reasoning: cfg.reasoning,
|
|
60
|
-
input: cfg.input,
|
|
61
|
-
cost: cfg.cost,
|
|
62
|
-
contextWindow: cfg.contextWindow,
|
|
63
|
-
maxTokens: cfg.maxTokens
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const context: Context = {
|
|
67
|
-
messages: [{ role: 'user', content: 'Say hello in exactly 3 words.', timestamp: Date.now() }]
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
console.log(`Model: ${model.id}, Backend: ${cfg.backend}, Thinking: ${useThinking}`);
|
|
71
|
-
|
|
72
|
-
const stream = streamSimple(model, context, {
|
|
73
|
-
apiKey: gitlabCred.access,
|
|
74
|
-
maxTokens: 100,
|
|
75
|
-
reasoning: useThinking ? 'low' : undefined
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
for await (const event of stream) {
|
|
79
|
-
if (event.type === 'thinking_start') console.log('[Thinking]');
|
|
80
|
-
else if (event.type === 'thinking_delta') process.stdout.write(event.delta);
|
|
81
|
-
else if (event.type === 'thinking_end') console.log('\n[/Thinking]\n');
|
|
82
|
-
else if (event.type === 'text_delta') process.stdout.write(event.delta);
|
|
83
|
-
else if (event.type === 'error') console.error('\nError:', event.error.errorMessage);
|
|
84
|
-
else if (event.type === 'done') console.log('\n\nDone!', event.reason, event.message.usage);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
main().catch(console.error);
|
|
1
|
+
/**
|
|
2
|
+
* Test script for GitLab Duo extension
|
|
3
|
+
* Run: npx tsx test.ts [model-id] [--thinking]
|
|
4
|
+
*
|
|
5
|
+
* Examples:
|
|
6
|
+
* npx tsx test.ts # Test default (claude-sonnet-4-5-20250929)
|
|
7
|
+
* npx tsx test.ts gpt-5-codex # Test GPT-5 Codex
|
|
8
|
+
* npx tsx test.ts claude-sonnet-4-5-20250929 --thinking
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { readFileSync } from 'fs';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import {
|
|
15
|
+
type Api,
|
|
16
|
+
type Context,
|
|
17
|
+
type Model,
|
|
18
|
+
registerApiProvider,
|
|
19
|
+
streamSimple
|
|
20
|
+
} from 'shortcutxl';
|
|
21
|
+
import { MODELS, streamGitLabDuo } from './index.js';
|
|
22
|
+
|
|
23
|
+
const MODEL_MAP = new Map(MODELS.map((m) => [m.id, m]));
|
|
24
|
+
|
|
25
|
+
async function main() {
|
|
26
|
+
const modelId = process.argv[2] || 'claude-sonnet-4-5-20250929';
|
|
27
|
+
const useThinking = process.argv.includes('--thinking');
|
|
28
|
+
|
|
29
|
+
const cfg = MODEL_MAP.get(modelId);
|
|
30
|
+
if (!cfg) {
|
|
31
|
+
console.error(`Unknown model: ${modelId}`);
|
|
32
|
+
console.error('Available:', MODELS.map((m) => m.id).join(', '));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Read auth
|
|
37
|
+
const authPath = join(homedir(), '.shortcut', 'agent', 'auth.json');
|
|
38
|
+
const authData = JSON.parse(readFileSync(authPath, 'utf-8'));
|
|
39
|
+
const gitlabCred = authData['gitlab-duo'];
|
|
40
|
+
if (!gitlabCred?.access) {
|
|
41
|
+
console.error('No gitlab-duo credentials. Run /login gitlab-duo first.');
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Register provider
|
|
46
|
+
registerApiProvider({
|
|
47
|
+
api: 'gitlab-duo-api' as Api,
|
|
48
|
+
stream: streamGitLabDuo,
|
|
49
|
+
streamSimple: streamGitLabDuo
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Create model
|
|
53
|
+
const model: Model<Api> = {
|
|
54
|
+
id: cfg.id,
|
|
55
|
+
name: cfg.name,
|
|
56
|
+
api: 'gitlab-duo-api' as Api,
|
|
57
|
+
provider: 'gitlab-duo',
|
|
58
|
+
baseUrl: cfg.baseUrl,
|
|
59
|
+
reasoning: cfg.reasoning,
|
|
60
|
+
input: cfg.input,
|
|
61
|
+
cost: cfg.cost,
|
|
62
|
+
contextWindow: cfg.contextWindow,
|
|
63
|
+
maxTokens: cfg.maxTokens
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const context: Context = {
|
|
67
|
+
messages: [{ role: 'user', content: 'Say hello in exactly 3 words.', timestamp: Date.now() }]
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
console.log(`Model: ${model.id}, Backend: ${cfg.backend}, Thinking: ${useThinking}`);
|
|
71
|
+
|
|
72
|
+
const stream = streamSimple(model, context, {
|
|
73
|
+
apiKey: gitlabCred.access,
|
|
74
|
+
maxTokens: 100,
|
|
75
|
+
reasoning: useThinking ? 'low' : undefined
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
for await (const event of stream) {
|
|
79
|
+
if (event.type === 'thinking_start') console.log('[Thinking]');
|
|
80
|
+
else if (event.type === 'thinking_delta') process.stdout.write(event.delta);
|
|
81
|
+
else if (event.type === 'thinking_end') console.log('\n[/Thinking]\n');
|
|
82
|
+
else if (event.type === 'text_delta') process.stdout.write(event.delta);
|
|
83
|
+
else if (event.type === 'error') console.error('\nError:', event.error.errorMessage);
|
|
84
|
+
else if (event.type === 'done') console.log('\n\nDone!', event.reason, event.message.usage);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
main().catch(console.error);
|