@stigmer/cli 3.16.0 → 3.17.0
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/commands/agent-exec-flags.d.ts +2 -5
- package/commands/agent-exec-flags.d.ts.map +1 -1
- package/commands/agent-exec-flags.js +6 -13
- package/commands/agent-exec-flags.js.map +1 -1
- package/commands/connect.js +1 -1
- package/commands/connect.js.map +1 -1
- package/commands/install.d.ts +3 -0
- package/commands/install.d.ts.map +1 -0
- package/commands/install.js +68 -0
- package/commands/install.js.map +1 -0
- package/commands/marketplace.d.ts +3 -0
- package/commands/marketplace.d.ts.map +1 -0
- package/commands/marketplace.js +94 -0
- package/commands/marketplace.js.map +1 -0
- package/commands/push.js +2 -7
- package/commands/push.js.map +1 -1
- package/commands/run.js +0 -3
- package/commands/run.js.map +1 -1
- package/config/config.d.ts +19 -0
- package/config/config.d.ts.map +1 -1
- package/config/config.js +15 -0
- package/config/config.js.map +1 -1
- package/config/index.d.ts +1 -1
- package/config/index.d.ts.map +1 -1
- package/config/index.js.map +1 -1
- package/local/bootstrap.d.ts +21 -0
- package/local/bootstrap.d.ts.map +1 -0
- package/local/bootstrap.js +88 -0
- package/local/bootstrap.js.map +1 -0
- package/local/daemon/launch.d.ts +2 -2
- package/local/daemon/launch.d.ts.map +1 -1
- package/local/daemon/launch.js +4 -34
- package/local/daemon/launch.js.map +1 -1
- package/local/daemon/process.d.ts +1 -1
- package/local/plugins/defaults.d.ts +35 -0
- package/local/plugins/defaults.d.ts.map +1 -0
- package/local/plugins/defaults.js +83 -0
- package/local/plugins/defaults.js.map +1 -0
- package/local/seedpack/content.d.ts +2 -1
- package/local/seedpack/content.d.ts.map +1 -1
- package/local/seedpack/content.js +5 -34
- package/local/seedpack/content.js.map +1 -1
- package/marketplace/config.d.ts +59 -0
- package/marketplace/config.d.ts.map +1 -0
- package/marketplace/config.js +162 -0
- package/marketplace/config.js.map +1 -0
- package/marketplace/github.d.ts +31 -0
- package/marketplace/github.d.ts.map +1 -0
- package/marketplace/github.js +203 -0
- package/marketplace/github.js.map +1 -0
- package/marketplace/index.d.ts +8 -0
- package/marketplace/index.d.ts.map +1 -0
- package/marketplace/index.js +12 -0
- package/marketplace/index.js.map +1 -0
- package/marketplace/install.d.ts +28 -0
- package/marketplace/install.d.ts.map +1 -0
- package/marketplace/install.js +109 -0
- package/marketplace/install.js.map +1 -0
- package/marketplace/materialize.d.ts +19 -0
- package/marketplace/materialize.d.ts.map +1 -0
- package/marketplace/materialize.js +53 -0
- package/marketplace/materialize.js.map +1 -0
- package/marketplace/official.d.ts +28 -0
- package/marketplace/official.d.ts.map +1 -0
- package/marketplace/official.js +86 -0
- package/marketplace/official.js.map +1 -0
- package/marketplace/read.d.ts +17 -0
- package/marketplace/read.d.ts.map +1 -0
- package/marketplace/read.js +44 -0
- package/marketplace/read.js.map +1 -0
- package/marketplace/ref.d.ts +13 -0
- package/marketplace/ref.d.ts.map +1 -0
- package/marketplace/ref.js +54 -0
- package/marketplace/ref.js.map +1 -0
- package/marketplace/render.d.ts +22 -0
- package/marketplace/render.d.ts.map +1 -0
- package/marketplace/render.js +118 -0
- package/marketplace/render.js.map +1 -0
- package/output/ndjson.js +1 -1
- package/output/ndjson.js.map +1 -1
- package/package.json +7 -6
- package/program.d.ts.map +1 -1
- package/program.js +4 -2
- package/program.js.map +1 -1
- package/resources/ignore/index.d.ts +2 -4
- package/resources/ignore/index.d.ts.map +1 -1
- package/resources/ignore/index.js +5 -5
- package/resources/ignore/index.js.map +1 -1
- package/resources/ignore/matcher.d.ts +2 -35
- package/resources/ignore/matcher.d.ts.map +1 -1
- package/resources/ignore/matcher.js +25 -109
- package/resources/ignore/matcher.js.map +1 -1
- package/resources/plugin.d.ts +50 -18
- package/resources/plugin.d.ts.map +1 -1
- package/resources/plugin.js +73 -74
- package/resources/plugin.js.map +1 -1
- package/resources/run/agent-exec.js +1 -1
- package/resources/run/agent-exec.js.map +1 -1
- package/resources/run/prepare.d.ts +8 -19
- package/resources/run/prepare.d.ts.map +1 -1
- package/resources/run/prepare.js +4 -4
- package/resources/run/prepare.js.map +1 -1
- package/resources/skill.d.ts +2 -2
- package/resources/skill.d.ts.map +1 -1
- package/resources/skill.js +6 -10
- package/resources/skill.js.map +1 -1
- package/src/commands/agent-exec-flags.ts +6 -12
- package/src/commands/connect.ts +1 -1
- package/src/commands/install.test.ts +289 -0
- package/src/commands/install.ts +108 -0
- package/src/commands/marketplace.test.ts +200 -0
- package/src/commands/marketplace.ts +131 -0
- package/src/commands/push.ts +5 -10
- package/src/commands/run.ts +0 -3
- package/src/config/config.ts +37 -0
- package/src/config/index.ts +1 -0
- package/src/local/bootstrap.test.ts +71 -0
- package/src/local/bootstrap.ts +133 -0
- package/src/local/daemon/launch.ts +5 -40
- package/src/local/daemon/process.ts +1 -1
- package/src/local/plugins/defaults.test.ts +238 -0
- package/src/local/plugins/defaults.ts +135 -0
- package/src/local/seedpack/content.ts +11 -42
- package/src/marketplace/__fixtures__/cursor-marketplace.ts +62 -0
- package/src/marketplace/config.test.ts +245 -0
- package/src/marketplace/config.ts +236 -0
- package/src/marketplace/github.test.ts +318 -0
- package/src/marketplace/github.ts +296 -0
- package/src/marketplace/index.ts +54 -0
- package/src/marketplace/install.test.ts +194 -0
- package/src/marketplace/install.ts +159 -0
- package/src/marketplace/materialize.ts +80 -0
- package/src/marketplace/official.test.ts +107 -0
- package/src/marketplace/official.ts +125 -0
- package/src/marketplace/read.test.ts +94 -0
- package/src/marketplace/read.ts +76 -0
- package/src/marketplace/ref.test.ts +179 -0
- package/src/marketplace/ref.ts +74 -0
- package/src/marketplace/render.ts +154 -0
- package/src/output/ndjson.ts +1 -1
- package/src/program.test.ts +4 -13
- package/src/program.ts +4 -2
- package/src/resources/ignore/ignore.test.ts +23 -100
- package/src/resources/ignore/index.ts +11 -8
- package/src/resources/ignore/matcher.ts +33 -136
- package/src/resources/plugin.test.ts +35 -6
- package/src/resources/plugin.ts +132 -85
- package/src/resources/run/agent-exec.ts +1 -1
- package/src/resources/run/prepare.test.ts +4 -18
- package/src/resources/run/prepare.ts +12 -24
- package/src/resources/skill.ts +6 -10
- package/commands/draft.d.ts +0 -3
- package/commands/draft.d.ts.map +0 -1
- package/commands/draft.js +0 -115
- package/commands/draft.js.map +0 -1
- package/resources/ignore/defaults.d.ts +0 -2
- package/resources/ignore/defaults.d.ts.map +0 -1
- package/resources/ignore/defaults.js +0 -140
- package/resources/ignore/defaults.js.map +0 -1
- package/resources/ignore/match.d.ts +0 -3
- package/resources/ignore/match.d.ts.map +0 -1
- package/resources/ignore/match.js +0 -166
- package/resources/ignore/match.js.map +0 -1
- package/resources/ignore/pattern.d.ts +0 -13
- package/resources/ignore/pattern.d.ts.map +0 -1
- package/resources/ignore/pattern.js +0 -118
- package/resources/ignore/pattern.js.map +0 -1
- package/src/commands/draft.ts +0 -189
- package/src/resources/ignore/defaults.ts +0 -155
- package/src/resources/ignore/match.ts +0 -158
- package/src/resources/ignore/pattern.ts +0 -131
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
// Built-in security-first ignore patterns, applied (lowest priority) unless
|
|
2
|
-
// disabled. A verbatim port of the Go CLI's DefaultPatterns so `push` excludes
|
|
3
|
-
// the same secrets, VCS metadata, and build artifacts on both CLIs.
|
|
4
|
-
export const DEFAULT_PATTERNS = [
|
|
5
|
-
// Version control
|
|
6
|
-
".git/",
|
|
7
|
-
".svn/",
|
|
8
|
-
".hg/",
|
|
9
|
-
".bzr/",
|
|
10
|
-
// Environment files (often contain secrets)
|
|
11
|
-
".env",
|
|
12
|
-
".env.*",
|
|
13
|
-
"!.env.example",
|
|
14
|
-
"!.env.template",
|
|
15
|
-
"!.env.sample",
|
|
16
|
-
// Private keys and certificates
|
|
17
|
-
"*.pem",
|
|
18
|
-
"*.key",
|
|
19
|
-
"*.p12",
|
|
20
|
-
"*.pfx",
|
|
21
|
-
"*.keystore",
|
|
22
|
-
"*.jks",
|
|
23
|
-
"id_rsa",
|
|
24
|
-
"id_rsa.*",
|
|
25
|
-
"id_ed25519",
|
|
26
|
-
"id_ed25519.*",
|
|
27
|
-
"id_dsa",
|
|
28
|
-
"id_dsa.*",
|
|
29
|
-
// Cloud credentials
|
|
30
|
-
"credentials.json",
|
|
31
|
-
"service-account*.json",
|
|
32
|
-
"gcp-credentials*.json",
|
|
33
|
-
"aws-credentials",
|
|
34
|
-
".aws/credentials",
|
|
35
|
-
".aws/config",
|
|
36
|
-
// Generic secrets
|
|
37
|
-
".secrets",
|
|
38
|
-
".secrets/",
|
|
39
|
-
"*.secret",
|
|
40
|
-
".credentials/",
|
|
41
|
-
"secrets.yaml",
|
|
42
|
-
"secrets.yml",
|
|
43
|
-
"secrets.json",
|
|
44
|
-
// Package manager auth
|
|
45
|
-
".npmrc",
|
|
46
|
-
".pypirc",
|
|
47
|
-
".gem/credentials",
|
|
48
|
-
".docker/config.json",
|
|
49
|
-
// IDE and editor
|
|
50
|
-
".idea/",
|
|
51
|
-
".vscode/",
|
|
52
|
-
"*.swp",
|
|
53
|
-
"*.swo",
|
|
54
|
-
"*.swn",
|
|
55
|
-
"*~",
|
|
56
|
-
".project",
|
|
57
|
-
".classpath",
|
|
58
|
-
".settings/",
|
|
59
|
-
"*.sublime-workspace",
|
|
60
|
-
"*.sublime-project",
|
|
61
|
-
".vs/",
|
|
62
|
-
// Operating system
|
|
63
|
-
".DS_Store",
|
|
64
|
-
".DS_Store?",
|
|
65
|
-
"._*",
|
|
66
|
-
".Spotlight-V100",
|
|
67
|
-
".Trashes",
|
|
68
|
-
"Thumbs.db",
|
|
69
|
-
"Thumbs.db:encryptable",
|
|
70
|
-
"desktop.ini",
|
|
71
|
-
"ehthumbs.db",
|
|
72
|
-
"ehthumbs_vista.db",
|
|
73
|
-
// Node.js
|
|
74
|
-
"node_modules/",
|
|
75
|
-
"npm-debug.log*",
|
|
76
|
-
"yarn-debug.log*",
|
|
77
|
-
"yarn-error.log*",
|
|
78
|
-
".npm/",
|
|
79
|
-
".yarn/cache/",
|
|
80
|
-
".yarn/unplugged/",
|
|
81
|
-
".pnp.*",
|
|
82
|
-
// Python
|
|
83
|
-
"__pycache__/",
|
|
84
|
-
"*.py[cod]",
|
|
85
|
-
"*$py.class",
|
|
86
|
-
".Python",
|
|
87
|
-
"*.so",
|
|
88
|
-
".venv/",
|
|
89
|
-
"venv/",
|
|
90
|
-
"env/",
|
|
91
|
-
"ENV/",
|
|
92
|
-
".pytest_cache/",
|
|
93
|
-
".mypy_cache/",
|
|
94
|
-
".ruff_cache/",
|
|
95
|
-
".tox/",
|
|
96
|
-
".nox/",
|
|
97
|
-
"*.egg-info/",
|
|
98
|
-
".eggs/",
|
|
99
|
-
"dist/",
|
|
100
|
-
"build/",
|
|
101
|
-
"develop-eggs/",
|
|
102
|
-
".installed.cfg",
|
|
103
|
-
"*.manifest",
|
|
104
|
-
"*.spec",
|
|
105
|
-
"pip-log.txt",
|
|
106
|
-
"pip-delete-this-directory.txt",
|
|
107
|
-
// Java/JVM
|
|
108
|
-
"target/",
|
|
109
|
-
"*.class",
|
|
110
|
-
"*.jar",
|
|
111
|
-
"*.war",
|
|
112
|
-
"*.ear",
|
|
113
|
-
".gradle/",
|
|
114
|
-
"gradle-app.setting",
|
|
115
|
-
".gradletasknamecache",
|
|
116
|
-
// Go
|
|
117
|
-
"vendor/",
|
|
118
|
-
// Rust
|
|
119
|
-
"target/",
|
|
120
|
-
"Cargo.lock",
|
|
121
|
-
// Coverage and test reports
|
|
122
|
-
"coverage/",
|
|
123
|
-
".coverage",
|
|
124
|
-
"htmlcov/",
|
|
125
|
-
".nyc_output/",
|
|
126
|
-
"coverage.xml",
|
|
127
|
-
"*.cover",
|
|
128
|
-
".hypothesis/",
|
|
129
|
-
// Logs
|
|
130
|
-
"*.log",
|
|
131
|
-
"logs/",
|
|
132
|
-
// Temporary files
|
|
133
|
-
"tmp/",
|
|
134
|
-
"temp/",
|
|
135
|
-
"*.tmp",
|
|
136
|
-
"*.temp",
|
|
137
|
-
"*.bak",
|
|
138
|
-
"*.backup",
|
|
139
|
-
];
|
|
140
|
-
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/resources/ignore/defaults.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oEAAoE;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,kBAAkB;IAClB,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IAEP,4CAA4C;IAC5C,MAAM;IACN,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,cAAc;IAEd,gCAAgC;IAChC,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,cAAc;IACd,QAAQ;IACR,UAAU;IAEV,oBAAoB;IACpB,kBAAkB;IAClB,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IAEb,kBAAkB;IAClB,UAAU;IACV,WAAW;IACX,UAAU;IACV,eAAe;IACf,cAAc;IACd,aAAa;IACb,cAAc;IAEd,uBAAuB;IACvB,QAAQ;IACR,SAAS;IACT,kBAAkB;IAClB,qBAAqB;IAErB,iBAAiB;IACjB,QAAQ;IACR,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,mBAAmB;IACnB,MAAM;IAEN,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,KAAK;IACL,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,mBAAmB;IAEnB,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,OAAO;IACP,cAAc;IACd,kBAAkB;IAClB,QAAQ;IAER,SAAS;IACT,cAAc;IACd,WAAW;IACX,YAAY;IACZ,SAAS;IACT,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,OAAO;IACP,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,+BAA+B;IAE/B,WAAW;IACX,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,oBAAoB;IACpB,sBAAsB;IAEtB,KAAK;IACL,SAAS;IAET,OAAO;IACP,SAAS;IACT,YAAY;IAEZ,4BAA4B;IAC5B,WAAW;IACX,WAAW;IACX,UAAU;IACV,cAAc;IACd,cAAc;IACd,SAAS;IACT,cAAc;IAEd,OAAO;IACP,OAAO;IACP,OAAO;IAEP,kBAAkB;IAClB,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;CACX,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/resources/ignore/match.ts"],"names":[],"mappings":"AAeA,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhE"}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
// Faithful port of Go's path/filepath Match, used by the gitignore pattern
|
|
2
|
-
// engine to match a single glob against a single path component.
|
|
3
|
-
//
|
|
4
|
-
// The separator is fixed to "/" (paths are normalized to forward slashes and
|
|
5
|
-
// individual components never contain a separator). Matching operates on UTF-16
|
|
6
|
-
// code units rather than runes — correct for the ASCII glob syntax gitignore
|
|
7
|
-
// patterns use; exotic multi-byte classes are out of scope.
|
|
8
|
-
//
|
|
9
|
-
// Go returns ErrBadPattern for malformed patterns; every go-git caller treats
|
|
10
|
-
// that as "no match", so `matchName` swallows the error and returns false.
|
|
11
|
-
const SEPARATOR = "/";
|
|
12
|
-
class BadPatternError extends Error {
|
|
13
|
-
}
|
|
14
|
-
/** Match `name` against the glob `pattern` (Go filepath.Match semantics). */
|
|
15
|
-
export function matchName(pattern, name) {
|
|
16
|
-
try {
|
|
17
|
-
return matchImpl(pattern, name);
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
if (err instanceof BadPatternError)
|
|
21
|
-
return false;
|
|
22
|
-
throw err;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function matchImpl(pattern, name) {
|
|
26
|
-
outer: while (pattern.length > 0) {
|
|
27
|
-
const [star, chunk, rest] = scanChunk(pattern);
|
|
28
|
-
pattern = rest;
|
|
29
|
-
if (star && chunk === "") {
|
|
30
|
-
// Trailing `*` matches the rest of the component (which has no separator).
|
|
31
|
-
return !name.includes(SEPARATOR);
|
|
32
|
-
}
|
|
33
|
-
const [t, ok] = matchChunk(chunk, name);
|
|
34
|
-
if (ok && (t.length === 0 || pattern.length > 0)) {
|
|
35
|
-
name = t;
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
if (star) {
|
|
39
|
-
for (let i = 0; i < name.length && name[i] !== SEPARATOR; i++) {
|
|
40
|
-
const [t2, ok2] = matchChunk(chunk, name.slice(i + 1));
|
|
41
|
-
if (ok2) {
|
|
42
|
-
if (pattern.length === 0 && t2.length > 0)
|
|
43
|
-
continue;
|
|
44
|
-
name = t2;
|
|
45
|
-
continue outer;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
return name.length === 0;
|
|
52
|
-
}
|
|
53
|
-
function scanChunk(pattern) {
|
|
54
|
-
let star = false;
|
|
55
|
-
while (pattern.length > 0 && pattern[0] === "*") {
|
|
56
|
-
pattern = pattern.slice(1);
|
|
57
|
-
star = true;
|
|
58
|
-
}
|
|
59
|
-
let inrange = false;
|
|
60
|
-
let i = 0;
|
|
61
|
-
scan: for (i = 0; i < pattern.length; i++) {
|
|
62
|
-
switch (pattern[i]) {
|
|
63
|
-
case "\\":
|
|
64
|
-
if (i + 1 < pattern.length)
|
|
65
|
-
i++;
|
|
66
|
-
break;
|
|
67
|
-
case "[":
|
|
68
|
-
inrange = true;
|
|
69
|
-
break;
|
|
70
|
-
case "]":
|
|
71
|
-
inrange = false;
|
|
72
|
-
break;
|
|
73
|
-
case "*":
|
|
74
|
-
if (!inrange)
|
|
75
|
-
break scan;
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return [star, pattern.slice(0, i), pattern.slice(i)];
|
|
80
|
-
}
|
|
81
|
-
function matchChunk(chunk, s) {
|
|
82
|
-
let failed = false;
|
|
83
|
-
while (chunk.length > 0) {
|
|
84
|
-
if (!failed && s.length === 0)
|
|
85
|
-
failed = true;
|
|
86
|
-
const c = chunk[0];
|
|
87
|
-
if (c === "[") {
|
|
88
|
-
let r = "";
|
|
89
|
-
if (!failed) {
|
|
90
|
-
r = s[0];
|
|
91
|
-
s = s.slice(1);
|
|
92
|
-
}
|
|
93
|
-
chunk = chunk.slice(1);
|
|
94
|
-
let negated = false;
|
|
95
|
-
if (chunk.length > 0 && chunk[0] === "^") {
|
|
96
|
-
negated = true;
|
|
97
|
-
chunk = chunk.slice(1);
|
|
98
|
-
}
|
|
99
|
-
let match = false;
|
|
100
|
-
let nrange = 0;
|
|
101
|
-
for (;;) {
|
|
102
|
-
if (chunk.length > 0 && chunk[0] === "]" && nrange > 0) {
|
|
103
|
-
chunk = chunk.slice(1);
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
let lo;
|
|
107
|
-
[lo, chunk] = getEsc(chunk);
|
|
108
|
-
let hi = lo;
|
|
109
|
-
if (chunk[0] === "-") {
|
|
110
|
-
[hi, chunk] = getEsc(chunk.slice(1));
|
|
111
|
-
}
|
|
112
|
-
if (lo <= r && r <= hi)
|
|
113
|
-
match = true;
|
|
114
|
-
nrange++;
|
|
115
|
-
}
|
|
116
|
-
if (match === negated)
|
|
117
|
-
failed = true;
|
|
118
|
-
}
|
|
119
|
-
else if (c === "?") {
|
|
120
|
-
if (!failed) {
|
|
121
|
-
if (s[0] === SEPARATOR)
|
|
122
|
-
failed = true;
|
|
123
|
-
s = s.slice(1);
|
|
124
|
-
}
|
|
125
|
-
chunk = chunk.slice(1);
|
|
126
|
-
}
|
|
127
|
-
else if (c === "\\") {
|
|
128
|
-
chunk = chunk.slice(1);
|
|
129
|
-
if (chunk.length === 0)
|
|
130
|
-
throw new BadPatternError("bad pattern");
|
|
131
|
-
if (!failed) {
|
|
132
|
-
if (chunk[0] !== s[0])
|
|
133
|
-
failed = true;
|
|
134
|
-
s = s.slice(1);
|
|
135
|
-
}
|
|
136
|
-
chunk = chunk.slice(1);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
if (!failed) {
|
|
140
|
-
if (chunk[0] !== s[0])
|
|
141
|
-
failed = true;
|
|
142
|
-
s = s.slice(1);
|
|
143
|
-
}
|
|
144
|
-
chunk = chunk.slice(1);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (failed)
|
|
148
|
-
return ["", false];
|
|
149
|
-
return [s, true];
|
|
150
|
-
}
|
|
151
|
-
function getEsc(chunk) {
|
|
152
|
-
if (chunk.length === 0 || chunk[0] === "-" || chunk[0] === "]") {
|
|
153
|
-
throw new BadPatternError("bad pattern");
|
|
154
|
-
}
|
|
155
|
-
if (chunk[0] === "\\") {
|
|
156
|
-
chunk = chunk.slice(1);
|
|
157
|
-
if (chunk.length === 0)
|
|
158
|
-
throw new BadPatternError("bad pattern");
|
|
159
|
-
}
|
|
160
|
-
const r = chunk[0];
|
|
161
|
-
const nchunk = chunk.slice(1);
|
|
162
|
-
if (nchunk.length === 0)
|
|
163
|
-
throw new BadPatternError("bad pattern");
|
|
164
|
-
return [r, nchunk];
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=match.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../../src/resources/ignore/match.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare enum MatchResult {
|
|
2
|
-
NoMatch = 0,
|
|
3
|
-
Exclude = 1,
|
|
4
|
-
Include = 2
|
|
5
|
-
}
|
|
6
|
-
export interface Pattern {
|
|
7
|
-
/** Whether this is a negation (`!`) pattern — needed for source ordering. */
|
|
8
|
-
readonly inclusion: boolean;
|
|
9
|
-
match(path: readonly string[], isDir: boolean): MatchResult;
|
|
10
|
-
}
|
|
11
|
-
/** Parse a gitignore pattern string into a matchable Pattern (go-git parity). */
|
|
12
|
-
export declare function parsePattern(raw: string, domain: readonly string[]): Pattern;
|
|
13
|
-
//# sourceMappingURL=pattern.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../../src/resources/ignore/pattern.ts"],"names":[],"mappings":"AAOA,oBAAY,WAAW;IACrB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,IAAI;CACZ;AAMD,MAAM,WAAW,OAAO;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC;CAC7D;AAsFD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAsB5E"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
// Faithful port of go-git's plumbing/format/gitignore Pattern (ParsePattern +
|
|
2
|
-
// Match). This is what gives `push` its exact gitignore semantics: domain
|
|
3
|
-
// scoping, directory-only patterns, single-name vs glob matching, and the
|
|
4
|
-
// `**` zero-to-many-directories wildcard.
|
|
5
|
-
import { matchName } from "./match.js";
|
|
6
|
-
export var MatchResult;
|
|
7
|
-
(function (MatchResult) {
|
|
8
|
-
MatchResult[MatchResult["NoMatch"] = 0] = "NoMatch";
|
|
9
|
-
MatchResult[MatchResult["Exclude"] = 1] = "Exclude";
|
|
10
|
-
MatchResult[MatchResult["Include"] = 2] = "Include";
|
|
11
|
-
})(MatchResult || (MatchResult = {}));
|
|
12
|
-
const INCLUSION_PREFIX = "!";
|
|
13
|
-
const ZERO_TO_MANY = "**";
|
|
14
|
-
const DIR_SEP = "/";
|
|
15
|
-
class GitignorePattern {
|
|
16
|
-
inclusion;
|
|
17
|
-
domain;
|
|
18
|
-
parts;
|
|
19
|
-
dirOnly;
|
|
20
|
-
isGlob;
|
|
21
|
-
constructor(domain, parts, inclusion, dirOnly, isGlob) {
|
|
22
|
-
this.domain = domain;
|
|
23
|
-
this.parts = parts;
|
|
24
|
-
this.inclusion = inclusion;
|
|
25
|
-
this.dirOnly = dirOnly;
|
|
26
|
-
this.isGlob = isGlob;
|
|
27
|
-
}
|
|
28
|
-
match(path, isDir) {
|
|
29
|
-
const matchResult = this.inclusion ? MatchResult.Include : MatchResult.Exclude;
|
|
30
|
-
if (path.length <= this.domain.length)
|
|
31
|
-
return MatchResult.NoMatch;
|
|
32
|
-
for (let i = 0; i < this.domain.length; i++) {
|
|
33
|
-
if (path[i] !== this.domain[i])
|
|
34
|
-
return MatchResult.NoMatch;
|
|
35
|
-
}
|
|
36
|
-
const scoped = path.slice(this.domain.length);
|
|
37
|
-
const matched = this.isGlob ? this.globMatch(scoped, isDir) : this.simpleNameMatch(scoped, isDir);
|
|
38
|
-
return matched ? matchResult : MatchResult.NoMatch;
|
|
39
|
-
}
|
|
40
|
-
simpleNameMatch(path, isDir) {
|
|
41
|
-
for (let i = 0; i < path.length; i++) {
|
|
42
|
-
if (!matchName(this.parts[0], path[i]))
|
|
43
|
-
continue;
|
|
44
|
-
if (this.dirOnly && !isDir && i === path.length - 1)
|
|
45
|
-
return false;
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
globMatch(path, isDir) {
|
|
51
|
-
let matched = false;
|
|
52
|
-
let canTraverse = false;
|
|
53
|
-
let remaining = path;
|
|
54
|
-
for (let i = 0; i < this.parts.length; i++) {
|
|
55
|
-
const part = this.parts[i];
|
|
56
|
-
if (part === "") {
|
|
57
|
-
canTraverse = false;
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
if (part === ZERO_TO_MANY) {
|
|
61
|
-
if (i === this.parts.length - 1)
|
|
62
|
-
break;
|
|
63
|
-
canTraverse = true;
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
if (part.includes(ZERO_TO_MANY))
|
|
67
|
-
return false;
|
|
68
|
-
if (remaining.length === 0)
|
|
69
|
-
return false;
|
|
70
|
-
if (canTraverse) {
|
|
71
|
-
canTraverse = false;
|
|
72
|
-
for (;;) {
|
|
73
|
-
if (remaining.length === 0) {
|
|
74
|
-
matched = false;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
const e = remaining[0];
|
|
78
|
-
remaining = remaining.slice(1);
|
|
79
|
-
if (matchName(part, e)) {
|
|
80
|
-
matched = true;
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
if (!matchName(part, remaining[0]))
|
|
87
|
-
return false;
|
|
88
|
-
matched = true;
|
|
89
|
-
remaining = remaining.slice(1);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (matched && this.dirOnly && !isDir && remaining.length === 0) {
|
|
93
|
-
matched = false;
|
|
94
|
-
}
|
|
95
|
-
return matched;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** Parse a gitignore pattern string into a matchable Pattern (go-git parity). */
|
|
99
|
-
export function parsePattern(raw, domain) {
|
|
100
|
-
let p = raw;
|
|
101
|
-
let inclusion = false;
|
|
102
|
-
if (p.startsWith(INCLUSION_PREFIX)) {
|
|
103
|
-
inclusion = true;
|
|
104
|
-
p = p.slice(1);
|
|
105
|
-
}
|
|
106
|
-
if (!p.endsWith("\\ ")) {
|
|
107
|
-
p = p.replace(/ +$/, "");
|
|
108
|
-
}
|
|
109
|
-
let dirOnly = false;
|
|
110
|
-
if (p.endsWith(DIR_SEP)) {
|
|
111
|
-
dirOnly = true;
|
|
112
|
-
p = p.slice(0, -1);
|
|
113
|
-
}
|
|
114
|
-
const isGlob = p.includes(DIR_SEP);
|
|
115
|
-
const parts = p.split(DIR_SEP);
|
|
116
|
-
return new GitignorePattern(domain, parts, inclusion, dirOnly, isGlob);
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=pattern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/resources/ignore/pattern.ts"],"names":[],"mappings":"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"}
|
package/src/commands/draft.ts
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
// `stigmer draft <skill|agent|mcp-server>` — AI-assisted resource creation. Each
|
|
2
|
-
// subcommand invokes a system agent (skill-creator/agent-creator/mcp-server-
|
|
3
|
-
// creator) that lives in the "stigmer" org, reusing the full run stack. Mirrors
|
|
4
|
-
// Go's draft.go + draft_handler.go.
|
|
5
|
-
//
|
|
6
|
-
// Draft differs from run only at the edges: the agent is fixed (a system agent),
|
|
7
|
-
// --message is required, and artifacts download to -o/--output (or the CWD)
|
|
8
|
-
// unless detached or a local workspace is in play.
|
|
9
|
-
|
|
10
|
-
import type { Command } from "commander";
|
|
11
|
-
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
12
|
-
import { ensureAuthenticated, resolveOrganization } from "../config/index.js";
|
|
13
|
-
import { UsageError } from "../errors/index.js";
|
|
14
|
-
import {
|
|
15
|
-
addAgentExecFlags,
|
|
16
|
-
type AgentExecOptions,
|
|
17
|
-
toAgentExecFlags,
|
|
18
|
-
} from "./agent-exec-flags.js";
|
|
19
|
-
import { globalOrg } from "./shared.js";
|
|
20
|
-
|
|
21
|
-
// The org that owns the system agent blueprints (installed by the seedpack),
|
|
22
|
-
// regardless of which org the user operates in. Mirrors Go's systemAgentOrg.
|
|
23
|
-
const SYSTEM_AGENT_ORG = "stigmer";
|
|
24
|
-
|
|
25
|
-
interface DraftFlags extends AgentExecOptions {
|
|
26
|
-
output?: string;
|
|
27
|
-
json?: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface DraftConfig {
|
|
31
|
-
/** Subcommand name + system agent slug. */
|
|
32
|
-
readonly name: string;
|
|
33
|
-
/** User-facing resource label. */
|
|
34
|
-
readonly resourceType: string;
|
|
35
|
-
readonly summary: string;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const CONFIGS: readonly DraftConfig[] = [
|
|
39
|
-
{
|
|
40
|
-
name: "skill",
|
|
41
|
-
resourceType: "Skill",
|
|
42
|
-
summary: "create a skill with AI assistance",
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: "agent",
|
|
46
|
-
resourceType: "Agent",
|
|
47
|
-
summary: "create an agent with AI assistance",
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "mcp-server",
|
|
51
|
-
resourceType: "McpServer",
|
|
52
|
-
summary: "create an MCP server config with AI assistance",
|
|
53
|
-
},
|
|
54
|
-
];
|
|
55
|
-
|
|
56
|
-
// System agent slug per subcommand (Go's draftConfig.AgentName: "<type>-creator").
|
|
57
|
-
function agentSlug(name: string): string {
|
|
58
|
-
return `${name}-creator`;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export function registerDraft(program: Command): void {
|
|
62
|
-
const draft = program
|
|
63
|
-
.command("draft")
|
|
64
|
-
.description("create resource configurations with AI assistance");
|
|
65
|
-
for (const config of CONFIGS) {
|
|
66
|
-
const sub = draft.command(config.name).description(config.summary);
|
|
67
|
-
addAgentExecFlags(sub, true)
|
|
68
|
-
.option(
|
|
69
|
-
"-o, --output <dir>",
|
|
70
|
-
"directory to save generated artifacts (default: current directory)",
|
|
71
|
-
)
|
|
72
|
-
.option("--json", "stream events as newline-delimited JSON")
|
|
73
|
-
.action((options: DraftFlags, command: Command) =>
|
|
74
|
-
runDraft(config, options, command),
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
async function runDraft(
|
|
80
|
-
config: DraftConfig,
|
|
81
|
-
options: DraftFlags,
|
|
82
|
-
command: Command,
|
|
83
|
-
): Promise<void> {
|
|
84
|
-
const { connectBackend } = await import("../backend.js");
|
|
85
|
-
const client = connectBackend();
|
|
86
|
-
ensureAuthenticated(client.config);
|
|
87
|
-
const org = resolveOrganization(client.config, globalOrg(command));
|
|
88
|
-
if (org === "") {
|
|
89
|
-
throw new UsageError(
|
|
90
|
-
"organization not set\n\nSet it with:\n stigmer config context set --org <org>\n stigmer draft --org <org> ...",
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const [
|
|
95
|
-
{ prepareAgentExec },
|
|
96
|
-
{ executeResolvedAgent },
|
|
97
|
-
{ resolveAgentRef },
|
|
98
|
-
{ localWorkspaceRoots },
|
|
99
|
-
] = await Promise.all([
|
|
100
|
-
import("../resources/run/prepare.js"),
|
|
101
|
-
import("../resources/run/agent-exec.js"),
|
|
102
|
-
import("../resources/run/resolve.js"),
|
|
103
|
-
import("../resources/run/workspace.js"),
|
|
104
|
-
]);
|
|
105
|
-
|
|
106
|
-
const agent = await resolveDraftAgent(
|
|
107
|
-
resolveAgentRef,
|
|
108
|
-
client.stigmer,
|
|
109
|
-
config,
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
const prepared = await prepareAgentExec(
|
|
113
|
-
toAgentExecFlags(options),
|
|
114
|
-
client.stigmer,
|
|
115
|
-
org,
|
|
116
|
-
stderrProgress(),
|
|
117
|
-
{
|
|
118
|
-
// The kind's tier against the server's reported edition, as `run` asks it.
|
|
119
|
-
accountPreferencesAvailable: await client.isResourceAvailable(
|
|
120
|
-
ApiResourceKind.identity_account,
|
|
121
|
-
),
|
|
122
|
-
},
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
if (prepared.attachments.length + prepared.workspaceFileRefs.length > 0) {
|
|
126
|
-
process.stderr.write(
|
|
127
|
-
`Attached ${prepared.attachments.length + prepared.workspaceFileRefs.length} file(s) as context\n`,
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
await executeResolvedAgent({
|
|
132
|
-
agent,
|
|
133
|
-
prepared,
|
|
134
|
-
org,
|
|
135
|
-
downloadDir: resolveDownloadDir(
|
|
136
|
-
options.output ?? "",
|
|
137
|
-
prepared.detach,
|
|
138
|
-
localWorkspaceRoots(prepared.workspaceEntries),
|
|
139
|
-
),
|
|
140
|
-
outputMode: options.json === true ? "json" : "inline",
|
|
141
|
-
client,
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Resolve the system agent in the "stigmer" org, with seedpack-recovery guidance
|
|
146
|
-
// on failure (Go's displayDraftAgentNotFoundError).
|
|
147
|
-
async function resolveDraftAgent(
|
|
148
|
-
resolveAgentRef: typeof import("../resources/run/resolve.js").resolveAgentRef,
|
|
149
|
-
client: import("@stigmer/sdk").Stigmer,
|
|
150
|
-
config: DraftConfig,
|
|
151
|
-
): Promise<import("@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb").Agent> {
|
|
152
|
-
const slug = agentSlug(config.name);
|
|
153
|
-
try {
|
|
154
|
-
return await resolveAgentRef(
|
|
155
|
-
client,
|
|
156
|
-
`${SYSTEM_AGENT_ORG}/${slug}`,
|
|
157
|
-
SYSTEM_AGENT_ORG,
|
|
158
|
-
);
|
|
159
|
-
} catch {
|
|
160
|
-
throw new UsageError(
|
|
161
|
-
`${slug} agent not found in organization "${SYSTEM_AGENT_ORG}"\n\n` +
|
|
162
|
-
`System agents are installed by the seedpack in the "${SYSTEM_AGENT_ORG}" organization.\n\n` +
|
|
163
|
-
"Troubleshooting:\n" +
|
|
164
|
-
` 1. Verify agents exist: stigmer list agents --org ${SYSTEM_AGENT_ORG}\n` +
|
|
165
|
-
" 2. Re-apply seedpack: stigmer apply -f seedpack/",
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Download-target resolution (Go's executeDraft switch):
|
|
171
|
-
// detach → no download (execution is backgrounded)
|
|
172
|
-
// explicit -o → that directory
|
|
173
|
-
// local workspace → skip (the agent writes directly to disk)
|
|
174
|
-
// otherwise → current directory
|
|
175
|
-
function resolveDownloadDir(
|
|
176
|
-
output: string,
|
|
177
|
-
detach: boolean,
|
|
178
|
-
localRoots: readonly string[],
|
|
179
|
-
): string {
|
|
180
|
-
if (detach) return "";
|
|
181
|
-
if (output !== "") return output;
|
|
182
|
-
if (localRoots.length > 0) return "";
|
|
183
|
-
return ".";
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
function stderrProgress(): (line: string) => void {
|
|
187
|
-
if (process.stderr.isTTY !== true) return () => {};
|
|
188
|
-
return (line) => void process.stderr.write(`${line}\n`);
|
|
189
|
-
}
|