@kodycodes/cli 3.0.5 → 3.1.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/README.md +6 -3
- package/dist/{auth-FV2O77LC.js → auth-2N7CSZGJ.js} +5 -5
- package/dist/bin.js +8 -8
- package/dist/{chunk-YXJ5S67U.js → chunk-5BIXRCH7.js} +2 -2
- package/dist/{chunk-WDVDHEEN.js → chunk-FDRTJFCM.js} +2 -2
- package/dist/{chunk-PZKBPKJ2.js → chunk-FS3BGXCK.js} +2 -2
- package/dist/{chunk-PUQGDXIY.js → chunk-JNQKDAPN.js} +2 -2
- package/dist/{chunk-VMP2UL6Z.js → chunk-PDDX5RJS.js} +6 -6
- package/dist/{chunk-SSBZQMVX.js → chunk-QI3ZICHR.js} +5 -5
- package/dist/chunk-TCJSXIEG.js +233 -0
- package/dist/chunk-TCJSXIEG.js.map +6 -0
- package/dist/{chunk-PIPQ2TTK.js → chunk-TGBFPYAY.js} +4 -4
- package/dist/{chunk-R6WETL6J.js → chunk-TK2Y4XD6.js} +51 -41
- package/dist/chunk-TK2Y4XD6.js.map +6 -0
- package/dist/{chunk-HO4GCC6N.js → chunk-YFDVDTNX.js} +15 -15
- package/dist/cli.js +8 -8
- package/dist/{dev-command-UDO2T4OI.js → dev-command-OUTCMZOC.js} +27 -27
- package/dist/{git-credential-6CJWVNED.js → git-credential-NTAPSLZP.js} +6 -6
- package/dist/{local-execute-O7FXIINV.js → local-execute-6NSAVTAV.js} +12 -12
- package/dist/{local-package-graph-FEPI7JNQ.js → local-package-graph-UU3XHKIM.js} +2 -2
- package/dist/{local-package-run-42R3CP2A.js → local-package-run-RATCOPRD.js} +9 -9
- package/dist/{mock-dep-resolve-TTCQQEN2.js → mock-dep-resolve-FM5GKMKE.js} +6 -6
- package/dist/mock-fetch-gateway-TNK74HEP.js +1 -1
- package/dist/{mock-local-deps-Z6DBUQTP.js → mock-local-deps-6I7HSHXD.js} +4 -4
- package/dist/mock-server-CJQI6B3A.js +1 -1
- package/dist/{open-api-client-42L6TM2U.js → open-api-client-7TV5SPHT.js} +3 -3
- package/dist/{remote-execute-J35MQTUC.js → remote-execute-XLKI7JTI.js} +3 -3
- package/dist/{setup-git-IGLLNSLA.js → setup-git-LQVUW2D4.js} +4 -4
- package/dist/skill-7B2RL273.js +38 -0
- package/dist/skill-7B2RL273.js.map +6 -0
- package/dist/skill-refresh.d.ts +2 -0
- package/dist/skill-refresh.js +20 -0
- package/dist/skill-refresh.js.map +6 -0
- package/dist/skill.d.ts +53 -11
- package/package.json +2 -2
- package/skills/kody/SKILL.md +15 -129
- package/dist/chunk-R6WETL6J.js.map +0 -6
- package/dist/skill-D74XVI6T.js +0 -61
- package/dist/skill-D74XVI6T.js.map +0 -6
- /package/dist/{auth-FV2O77LC.js.map → auth-2N7CSZGJ.js.map} +0 -0
- /package/dist/{chunk-YXJ5S67U.js.map → chunk-5BIXRCH7.js.map} +0 -0
- /package/dist/{chunk-WDVDHEEN.js.map → chunk-FDRTJFCM.js.map} +0 -0
- /package/dist/{chunk-PZKBPKJ2.js.map → chunk-FS3BGXCK.js.map} +0 -0
- /package/dist/{chunk-PUQGDXIY.js.map → chunk-JNQKDAPN.js.map} +0 -0
- /package/dist/{chunk-VMP2UL6Z.js.map → chunk-PDDX5RJS.js.map} +0 -0
- /package/dist/{chunk-SSBZQMVX.js.map → chunk-QI3ZICHR.js.map} +0 -0
- /package/dist/{chunk-PIPQ2TTK.js.map → chunk-TGBFPYAY.js.map} +0 -0
- /package/dist/{chunk-HO4GCC6N.js.map → chunk-YFDVDTNX.js.map} +0 -0
- /package/dist/{dev-command-UDO2T4OI.js.map → dev-command-OUTCMZOC.js.map} +0 -0
- /package/dist/{git-credential-6CJWVNED.js.map → git-credential-NTAPSLZP.js.map} +0 -0
- /package/dist/{local-execute-O7FXIINV.js.map → local-execute-6NSAVTAV.js.map} +0 -0
- /package/dist/{local-package-graph-FEPI7JNQ.js.map → local-package-graph-UU3XHKIM.js.map} +0 -0
- /package/dist/{local-package-run-42R3CP2A.js.map → local-package-run-RATCOPRD.js.map} +0 -0
- /package/dist/{mock-dep-resolve-TTCQQEN2.js.map → mock-dep-resolve-FM5GKMKE.js.map} +0 -0
- /package/dist/{mock-local-deps-Z6DBUQTP.js.map → mock-local-deps-6I7HSHXD.js.map} +0 -0
- /package/dist/{open-api-client-42L6TM2U.js.map → open-api-client-7TV5SPHT.js.map} +0 -0
- /package/dist/{remote-execute-J35MQTUC.js.map → remote-execute-XLKI7JTI.js.map} +0 -0
- /package/dist/{setup-git-IGLLNSLA.js.map → setup-git-LQVUW2D4.js.map} +0 -0
|
@@ -7,23 +7,23 @@ import {
|
|
|
7
7
|
gitCredentialHostFromMcpUrl,
|
|
8
8
|
resolveCliTokenLifetime,
|
|
9
9
|
setupGitDefaultScopes
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JNQKDAPN.js";
|
|
11
11
|
import "./chunk-6ZYUGXVW.js";
|
|
12
12
|
import {
|
|
13
13
|
ensureOpenApiCredentials
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-QI3ZICHR.js";
|
|
15
15
|
import "./chunk-CASGRYOF.js";
|
|
16
16
|
import "./chunk-GVSGNTG6.js";
|
|
17
|
+
import "./chunk-CWWHR4FH.js";
|
|
17
18
|
import {
|
|
18
19
|
callOpenApiOperation
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TGBFPYAY.js";
|
|
20
21
|
import "./chunk-46IJPEID.js";
|
|
21
|
-
import "./chunk-BML3W5CO.js";
|
|
22
22
|
import {
|
|
23
23
|
loadStoredApiToken
|
|
24
24
|
} from "./chunk-CCRCEU7S.js";
|
|
25
|
+
import "./chunk-BML3W5CO.js";
|
|
25
26
|
import "./chunk-NHRYNRXG.js";
|
|
26
|
-
import "./chunk-CWWHR4FH.js";
|
|
27
27
|
import {
|
|
28
28
|
loadCredentials
|
|
29
29
|
} from "./chunk-3H72XY5R.js";
|
|
@@ -167,4 +167,4 @@ export {
|
|
|
167
167
|
parseGitCredentialInput,
|
|
168
168
|
readGitCredentialStdin
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=git-credential-
|
|
170
|
+
//# sourceMappingURL=git-credential-NTAPSLZP.js.map
|
|
@@ -4,15 +4,10 @@ import {
|
|
|
4
4
|
forwardLocalGatewayFetchStream,
|
|
5
5
|
installMockFetchShimModules,
|
|
6
6
|
startLocalRuntimeBridge
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import {
|
|
9
|
-
resolveMockFetchGateway,
|
|
10
|
-
tryHandleMockGatewayFetchCall
|
|
11
|
-
} from "./chunk-DCQ57UXY.js";
|
|
7
|
+
} from "./chunk-FDRTJFCM.js";
|
|
12
8
|
import {
|
|
13
9
|
bundleLocalUserModule
|
|
14
10
|
} from "./chunk-7RLOLQIT.js";
|
|
15
|
-
import "./chunk-XV6D6HSG.js";
|
|
16
11
|
import {
|
|
17
12
|
createLocalEntrySource,
|
|
18
13
|
createLocalRuntimeModuleSource,
|
|
@@ -27,7 +22,13 @@ import {
|
|
|
27
22
|
runSecretEnvVar,
|
|
28
23
|
runSecretHeader,
|
|
29
24
|
writePackageModuleFiles
|
|
30
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-5BIXRCH7.js";
|
|
26
|
+
import {
|
|
27
|
+
resolveMockFetchGateway,
|
|
28
|
+
tryHandleMockGatewayFetchCall
|
|
29
|
+
} from "./chunk-DCQ57UXY.js";
|
|
30
|
+
import "./chunk-XV6D6HSG.js";
|
|
31
|
+
import "./chunk-EJXEVGWF.js";
|
|
31
32
|
import {
|
|
32
33
|
assertLocalExecuteNodeEngine
|
|
33
34
|
} from "./chunk-2XPH7L2P.js";
|
|
@@ -35,9 +36,6 @@ import {
|
|
|
35
36
|
redact
|
|
36
37
|
} from "./chunk-CASGRYOF.js";
|
|
37
38
|
import "./chunk-46IJPEID.js";
|
|
38
|
-
import {
|
|
39
|
-
ensureWorkerdBinary
|
|
40
|
-
} from "./chunk-BML3W5CO.js";
|
|
41
39
|
import {
|
|
42
40
|
assertTokenSafeApiUrl,
|
|
43
41
|
callCapabilityProxy,
|
|
@@ -46,8 +44,10 @@ import {
|
|
|
46
44
|
openCapabilityProxySession,
|
|
47
45
|
sessionSupportsCredentialCallMap
|
|
48
46
|
} from "./chunk-CCRCEU7S.js";
|
|
47
|
+
import {
|
|
48
|
+
ensureWorkerdBinary
|
|
49
|
+
} from "./chunk-BML3W5CO.js";
|
|
49
50
|
import "./chunk-NHRYNRXG.js";
|
|
50
|
-
import "./chunk-EJXEVGWF.js";
|
|
51
51
|
import "./chunk-3H72XY5R.js";
|
|
52
52
|
import {
|
|
53
53
|
apiTokenEnvVar
|
|
@@ -396,4 +396,4 @@ export {
|
|
|
396
396
|
runLocalExecute,
|
|
397
397
|
savedPackageImportLocalResolveStatus
|
|
398
398
|
};
|
|
399
|
-
//# sourceMappingURL=local-execute-
|
|
399
|
+
//# sourceMappingURL=local-execute-6NSAVTAV.js.map
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
rewriteLocalModulesToPackageFacades,
|
|
31
31
|
synthesizePackageGraphEntry,
|
|
32
32
|
writePackageModuleFiles
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-5BIXRCH7.js";
|
|
34
34
|
import "./chunk-CCRCEU7S.js";
|
|
35
35
|
import "./chunk-NHRYNRXG.js";
|
|
36
36
|
import "./chunk-3H72XY5R.js";
|
|
@@ -68,4 +68,4 @@ export {
|
|
|
68
68
|
synthesizePackageGraphEntry,
|
|
69
69
|
writePackageModuleFiles
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=local-package-graph-
|
|
71
|
+
//# sourceMappingURL=local-package-graph-UU3XHKIM.js.map
|
|
@@ -4,21 +4,21 @@ import {
|
|
|
4
4
|
packageIdMatchesLocalPackage,
|
|
5
5
|
resolveLocalPackageBinding,
|
|
6
6
|
runLocalPackageModule
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-VMP2UL6Z.js";
|
|
7
|
+
} from "./chunk-YFDVDTNX.js";
|
|
8
|
+
import "./chunk-PDDX5RJS.js";
|
|
9
|
+
import "./chunk-FDRTJFCM.js";
|
|
11
10
|
import "./chunk-7RLOLQIT.js";
|
|
11
|
+
import "./chunk-5BIXRCH7.js";
|
|
12
|
+
import "./chunk-DCQ57UXY.js";
|
|
12
13
|
import "./chunk-RAZBIC6O.js";
|
|
13
14
|
import "./chunk-XV6D6HSG.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-EJXEVGWF.js";
|
|
15
16
|
import "./chunk-CASGRYOF.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-TGBFPYAY.js";
|
|
17
18
|
import "./chunk-46IJPEID.js";
|
|
18
|
-
import "./chunk-BML3W5CO.js";
|
|
19
19
|
import "./chunk-CCRCEU7S.js";
|
|
20
|
+
import "./chunk-BML3W5CO.js";
|
|
20
21
|
import "./chunk-NHRYNRXG.js";
|
|
21
|
-
import "./chunk-EJXEVGWF.js";
|
|
22
22
|
import "./chunk-3H72XY5R.js";
|
|
23
23
|
import "./chunk-BTL3PJ2H.js";
|
|
24
24
|
import "./chunk-UW6AWLXX.js";
|
|
@@ -28,4 +28,4 @@ export {
|
|
|
28
28
|
resolveLocalPackageBinding,
|
|
29
29
|
runLocalPackageModule
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=local-package-run-
|
|
31
|
+
//# sourceMappingURL=local-package-run-RATCOPRD.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
resolveLocalExecuteBearer
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-FS3BGXCK.js";
|
|
5
|
+
import "./chunk-QI3ZICHR.js";
|
|
6
6
|
import "./chunk-CASGRYOF.js";
|
|
7
7
|
import "./chunk-GVSGNTG6.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-CWWHR4FH.js";
|
|
9
|
+
import "./chunk-TGBFPYAY.js";
|
|
9
10
|
import "./chunk-46IJPEID.js";
|
|
10
|
-
import "./chunk-BML3W5CO.js";
|
|
11
11
|
import {
|
|
12
12
|
resolveScopedApiToken
|
|
13
13
|
} from "./chunk-CCRCEU7S.js";
|
|
14
|
+
import "./chunk-BML3W5CO.js";
|
|
14
15
|
import "./chunk-NHRYNRXG.js";
|
|
15
|
-
import "./chunk-CWWHR4FH.js";
|
|
16
16
|
import "./chunk-3H72XY5R.js";
|
|
17
17
|
import {
|
|
18
18
|
defaultApiUrl,
|
|
@@ -57,4 +57,4 @@ async function tryResolveMockDepResolve(input) {
|
|
|
57
57
|
export {
|
|
58
58
|
tryResolveMockDepResolve
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=mock-dep-resolve-
|
|
60
|
+
//# sourceMappingURL=mock-dep-resolve-FM5GKMKE.js.map
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
unmockedRequestError
|
|
15
15
|
} from "./chunk-DCQ57UXY.js";
|
|
16
16
|
import "./chunk-XV6D6HSG.js";
|
|
17
|
+
import "./chunk-EJXEVGWF.js";
|
|
17
18
|
import "./chunk-BML3W5CO.js";
|
|
18
19
|
import "./chunk-NHRYNRXG.js";
|
|
19
|
-
import "./chunk-EJXEVGWF.js";
|
|
20
20
|
import "./chunk-UW6AWLXX.js";
|
|
21
21
|
export {
|
|
22
22
|
assertOutboundAllowed,
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
parseKodyPackageSpecifier,
|
|
8
8
|
resolveLocalPackageModules,
|
|
9
9
|
tryLoadSelfManifest
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PDDX5RJS.js";
|
|
11
11
|
import "./chunk-7RLOLQIT.js";
|
|
12
|
+
import "./chunk-5BIXRCH7.js";
|
|
12
13
|
import "./chunk-RAZBIC6O.js";
|
|
13
14
|
import "./chunk-XV6D6HSG.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-EJXEVGWF.js";
|
|
15
16
|
import "./chunk-CCRCEU7S.js";
|
|
16
17
|
import "./chunk-NHRYNRXG.js";
|
|
17
|
-
import "./chunk-EJXEVGWF.js";
|
|
18
18
|
import "./chunk-3H72XY5R.js";
|
|
19
19
|
import "./chunk-BTL3PJ2H.js";
|
|
20
20
|
import "./chunk-UW6AWLXX.js";
|
|
@@ -27,4 +27,4 @@ export {
|
|
|
27
27
|
resolveLocalPackageModules,
|
|
28
28
|
tryLoadSelfManifest
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=mock-local-deps-
|
|
30
|
+
//# sourceMappingURL=mock-local-deps-6I7HSHXD.js.map
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
} from "./chunk-5X563FYY.js";
|
|
9
9
|
import "./chunk-DCQ57UXY.js";
|
|
10
10
|
import "./chunk-XV6D6HSG.js";
|
|
11
|
+
import "./chunk-EJXEVGWF.js";
|
|
11
12
|
import "./chunk-BML3W5CO.js";
|
|
12
13
|
import "./chunk-NHRYNRXG.js";
|
|
13
|
-
import "./chunk-EJXEVGWF.js";
|
|
14
14
|
import "./chunk-UW6AWLXX.js";
|
|
15
15
|
export {
|
|
16
16
|
ensureMockTarget,
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
searchWithApiToken,
|
|
18
18
|
toolResultFromHttpBody,
|
|
19
19
|
whoamiWithApiToken
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TGBFPYAY.js";
|
|
21
21
|
import "./chunk-46IJPEID.js";
|
|
22
|
-
import "./chunk-BML3W5CO.js";
|
|
23
22
|
import "./chunk-CCRCEU7S.js";
|
|
23
|
+
import "./chunk-BML3W5CO.js";
|
|
24
24
|
import "./chunk-NHRYNRXG.js";
|
|
25
25
|
import "./chunk-3H72XY5R.js";
|
|
26
26
|
import "./chunk-BTL3PJ2H.js";
|
|
@@ -44,4 +44,4 @@ export {
|
|
|
44
44
|
toolResultFromHttpBody,
|
|
45
45
|
whoamiWithApiToken
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=open-api-client-
|
|
47
|
+
//# sourceMappingURL=open-api-client-7TV5SPHT.js.map
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-SLNAWWQK.js";
|
|
5
5
|
import {
|
|
6
6
|
openApiRequest
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TGBFPYAY.js";
|
|
8
8
|
import "./chunk-46IJPEID.js";
|
|
9
|
-
import "./chunk-BML3W5CO.js";
|
|
10
9
|
import {
|
|
11
10
|
assertTokenSafeApiUrl
|
|
12
11
|
} from "./chunk-CCRCEU7S.js";
|
|
12
|
+
import "./chunk-BML3W5CO.js";
|
|
13
13
|
import "./chunk-NHRYNRXG.js";
|
|
14
14
|
import "./chunk-3H72XY5R.js";
|
|
15
15
|
import "./chunk-BTL3PJ2H.js";
|
|
@@ -122,4 +122,4 @@ export {
|
|
|
122
122
|
resolveRemoteExecuteCode,
|
|
123
123
|
runRemoteExecuteWithToken
|
|
124
124
|
};
|
|
125
|
-
//# sourceMappingURL=remote-execute-
|
|
125
|
+
//# sourceMappingURL=remote-execute-XLKI7JTI.js.map
|
|
@@ -37,12 +37,12 @@ import {
|
|
|
37
37
|
setupGitConfigScopes,
|
|
38
38
|
setupGitDefaultScopes,
|
|
39
39
|
setupGitRequiredScopes
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-JNQKDAPN.js";
|
|
41
41
|
import "./chunk-6ZYUGXVW.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-TGBFPYAY.js";
|
|
43
43
|
import "./chunk-46IJPEID.js";
|
|
44
|
-
import "./chunk-BML3W5CO.js";
|
|
45
44
|
import "./chunk-CCRCEU7S.js";
|
|
45
|
+
import "./chunk-BML3W5CO.js";
|
|
46
46
|
import "./chunk-NHRYNRXG.js";
|
|
47
47
|
import "./chunk-3H72XY5R.js";
|
|
48
48
|
import "./chunk-BTL3PJ2H.js";
|
|
@@ -86,4 +86,4 @@ export {
|
|
|
86
86
|
setupGitDefaultScopes,
|
|
87
87
|
setupGitRequiredScopes
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=setup-git-
|
|
89
|
+
//# sourceMappingURL=setup-git-LQVUW2D4.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
agentSkillsOriginFromMcpUrl,
|
|
4
|
+
bundledSkillPath,
|
|
5
|
+
extractSkillBodyForDigest,
|
|
6
|
+
fetchHostedKodyCliSkill,
|
|
7
|
+
hostedAgentSkillsIndexPath,
|
|
8
|
+
hostedSkillFetchTimeoutMs,
|
|
9
|
+
installSkill,
|
|
10
|
+
projectSkillTargets,
|
|
11
|
+
refreshInstalledSkills,
|
|
12
|
+
scheduleDetachedSkillRefresh,
|
|
13
|
+
sha256Digest,
|
|
14
|
+
skillRefreshEntryPath,
|
|
15
|
+
userSkillTargets,
|
|
16
|
+
wrapHostedSkillBody,
|
|
17
|
+
writeFileAtomic
|
|
18
|
+
} from "./chunk-TCJSXIEG.js";
|
|
19
|
+
import "./chunk-BTL3PJ2H.js";
|
|
20
|
+
import "./chunk-UW6AWLXX.js";
|
|
21
|
+
export {
|
|
22
|
+
agentSkillsOriginFromMcpUrl,
|
|
23
|
+
bundledSkillPath,
|
|
24
|
+
extractSkillBodyForDigest,
|
|
25
|
+
fetchHostedKodyCliSkill,
|
|
26
|
+
hostedAgentSkillsIndexPath,
|
|
27
|
+
hostedSkillFetchTimeoutMs,
|
|
28
|
+
installSkill,
|
|
29
|
+
projectSkillTargets,
|
|
30
|
+
refreshInstalledSkills,
|
|
31
|
+
scheduleDetachedSkillRefresh,
|
|
32
|
+
sha256Digest,
|
|
33
|
+
skillRefreshEntryPath,
|
|
34
|
+
userSkillTargets,
|
|
35
|
+
wrapHostedSkillBody,
|
|
36
|
+
writeFileAtomic
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=skill-7B2RL273.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
refreshInstalledSkills
|
|
5
|
+
} from "./chunk-TCJSXIEG.js";
|
|
6
|
+
import "./chunk-BTL3PJ2H.js";
|
|
7
|
+
import "./chunk-UW6AWLXX.js";
|
|
8
|
+
|
|
9
|
+
// src/skill-refresh.ts
|
|
10
|
+
function readOrigin(argv) {
|
|
11
|
+
const index = argv.indexOf("--origin");
|
|
12
|
+
if (index < 0) return void 0;
|
|
13
|
+
const value = argv[index + 1];
|
|
14
|
+
return typeof value === "string" && value.trim() !== "" ? value.trim() : void 0;
|
|
15
|
+
}
|
|
16
|
+
await refreshInstalledSkills({
|
|
17
|
+
origin: readOrigin(process.argv.slice(2))
|
|
18
|
+
}).catch(() => {
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=skill-refresh.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/skill-refresh.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;AAOA,SAAS,WAAW,MAAyC;AAC5D,QAAM,QAAQ,KAAK,QAAQ,UAAU;AACrC,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,QAAQ,KAAK,QAAQ,CAAC;AAC5B,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAClD,MAAM,KAAK,IACX;AACJ;AAEA,MAAM,uBAAuB;AAAA,EAC5B,QAAQ,WAAW,QAAQ,KAAK,MAAM,CAAC,CAAC;AACzC,CAAC,EAAE,MAAM,MAAM;AAEf,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/skill.d.ts
CHANGED
|
@@ -1,18 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
path: string;
|
|
5
|
-
}>;
|
|
6
|
-
export declare function projectSkillTargets(cwd?: string): Array<{
|
|
1
|
+
import { type SpawnOptions } from 'node:child_process';
|
|
2
|
+
export declare const hostedAgentSkillsIndexPath = "/.well-known/agent-skills/index.json";
|
|
3
|
+
export type SkillTarget = {
|
|
7
4
|
host: string;
|
|
8
5
|
path: string;
|
|
9
|
-
}
|
|
6
|
+
};
|
|
7
|
+
export declare function bundledSkillPath(): string;
|
|
8
|
+
export declare function agentSkillsOriginFromMcpUrl(mcpUrl?: string): string;
|
|
9
|
+
export declare function userSkillTargets(home?: string): Array<SkillTarget>;
|
|
10
|
+
export declare function projectSkillTargets(cwd?: string): Array<SkillTarget>;
|
|
11
|
+
export declare function sha256Digest(body: string): string;
|
|
12
|
+
export declare function wrapHostedSkillBody(body: string): string;
|
|
13
|
+
/** Body bytes that should match the hosted index digest (no local frontmatter). */
|
|
14
|
+
export declare function extractSkillBodyForDigest(fileContents: string): string;
|
|
15
|
+
/** Bound hosted skill fetches so install/refresh can fall back offline. */
|
|
16
|
+
export declare const hostedSkillFetchTimeoutMs = 5000;
|
|
17
|
+
export declare function fetchHostedKodyCliSkill(input: {
|
|
18
|
+
origin?: string;
|
|
19
|
+
fetchImpl?: typeof fetch;
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
body: string;
|
|
23
|
+
digest: string;
|
|
24
|
+
url: string;
|
|
25
|
+
} | null>;
|
|
10
26
|
export declare function installSkill(input: {
|
|
11
27
|
project?: boolean;
|
|
12
28
|
cwd?: string;
|
|
13
29
|
home?: string;
|
|
14
30
|
sourcePath?: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
31
|
+
origin?: string;
|
|
32
|
+
fetchImpl?: typeof fetch;
|
|
33
|
+
}): Promise<Array<SkillTarget>>;
|
|
34
|
+
/**
|
|
35
|
+
* Refresh user-level installed skill copies when the hosted digest changed.
|
|
36
|
+
* Best-effort: missing files and network failures are ignored. Project copies
|
|
37
|
+
* are left alone so a repo that ships or commits its own skill is not rewritten
|
|
38
|
+
* by an unrelated CLI command.
|
|
39
|
+
*/
|
|
40
|
+
export declare function refreshInstalledSkills(input?: {
|
|
41
|
+
home?: string;
|
|
42
|
+
origin?: string;
|
|
43
|
+
fetchImpl?: typeof fetch;
|
|
44
|
+
}): Promise<Array<SkillTarget>>;
|
|
45
|
+
/** Write then rename so concurrent readers never see a partial skill file. */
|
|
46
|
+
export declare function writeFileAtomic(path: string, body: string): Promise<void>;
|
|
47
|
+
export declare function skillRefreshEntryPath(): string;
|
|
48
|
+
/**
|
|
49
|
+
* Spawn a detached child to refresh hosted skills so the parent CLI can exit
|
|
50
|
+
* without waiting on network I/O. Best-effort; spawn failures are ignored.
|
|
51
|
+
*/
|
|
52
|
+
type SkillRefreshChild = {
|
|
53
|
+
unref: () => void;
|
|
54
|
+
on?: (event: string, listener: (...args: Array<unknown>) => void) => unknown;
|
|
55
|
+
};
|
|
56
|
+
export declare function scheduleDetachedSkillRefresh(input?: {
|
|
57
|
+
origin?: string;
|
|
58
|
+
spawnImpl?: (command: string, args: Array<string>, options: SpawnOptions) => SkillRefreshChild;
|
|
59
|
+
}): void;
|
|
60
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kodycodes/cli",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Official Kody CLI: login, secure token storage, search, and execute over the OpenAPI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"build": "node scripts/build.mjs && tsc -p tsconfig.build.json",
|
|
24
24
|
"bench": "node scripts/bench.mjs",
|
|
25
25
|
"typecheck": "tsc --noEmit",
|
|
26
|
-
"test": "tsx --test test/*.test.ts",
|
|
26
|
+
"test": "KODY_SKIP_SKILL_REFRESH=1 KODY_SKIP_GIT_HELPER_REFRESH=1 tsx --test test/*.test.ts",
|
|
27
27
|
"validate": "npm run typecheck && npm run test && npm run build"
|
|
28
28
|
},
|
|
29
29
|
"engines": {
|
package/skills/kody/SKILL.md
CHANGED
|
@@ -1,142 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kody
|
|
3
3
|
description: >
|
|
4
|
-
Install
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Kody.
|
|
4
|
+
Install and bootstrap the Kody CLI, then prefer `execute --local` when Node
|
|
5
|
+
and a shell are available. Use when the person mentions Kody or wants local
|
|
6
|
+
execute instead of hosted Worker compute days.
|
|
8
7
|
---
|
|
9
8
|
|
|
10
|
-
# Kody
|
|
9
|
+
# Kody CLI
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
agent
|
|
14
|
-
and `@kodycodes/cli` are available. Use MCP / hosted paths when the CLI or Node
|
|
15
|
-
cannot run.
|
|
11
|
+
Always-current skill:
|
|
12
|
+
https://kody.codes/.well-known/agent-skills/kody-cli/SKILL.md
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
secrets while keeping `kody:runtime` hops on CapabilityProxy.
|
|
14
|
+
Index (with digests): https://kody.codes/.well-known/agent-skills/index.json
|
|
19
15
|
|
|
20
|
-
##
|
|
16
|
+
## Quick start
|
|
21
17
|
|
|
22
18
|
```bash
|
|
23
|
-
npx @kodycodes/cli install
|
|
19
|
+
npx -y @kodycodes/cli@latest skill install
|
|
20
|
+
npx -y @kodycodes/cli@latest execute --local --code 'import { kody } from "kody:runtime"; export default async function main() { return await kody.metaGetCurrentUser({}) }'
|
|
24
21
|
```
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
If the CLI is not signed in and you already have Kody MCP: call `api` with
|
|
24
|
+
`cliCredentialBootstrap`, then run the returned `cli_command`. Interactive
|
|
25
|
+
humans: `npx -y @kodycodes/cli@latest login`.
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- `search` — discover capabilities, packages, and entity detail
|
|
33
|
-
- `api` — call one Open API operation directly (no sandbox)
|
|
34
|
-
- Prefer `search` before composing work
|
|
35
|
-
|
|
36
|
-
For one-off modules, smoke tests, and composition: when Node ≥22 and the CLI are
|
|
37
|
-
available, prefer `npx @kodycodes/cli execute --local` (see
|
|
38
|
-
[Local CLI execute](https://kody.codes/docs/local-execute)). If `--local` cannot
|
|
39
|
-
run, use Open API / MCP `api`, or fix the environment — do **not** use hosted
|
|
40
|
-
MCP `execute` for agent work when a local or Open API path exists.
|
|
41
|
-
|
|
42
|
-
For web-based clients (ChatGPT, Claude.ai, Grok), point the user at
|
|
43
|
-
https://kody.codes/onboarding.
|
|
44
|
-
|
|
45
|
-
To copy this skill into Claude Code / Cursor / Agents:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npx @kodycodes/cli skill install
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## CLI
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
npm install -g @kodycodes/cli
|
|
55
|
-
kody login
|
|
56
|
-
kody login --org acme
|
|
57
|
-
kody search "what can you do"
|
|
58
|
-
kody search --domain email
|
|
59
|
-
kody execute --local --code "import { kody } from 'kody:runtime'\nexport default async function main() { return await kody.search({ query: 'what can you do' }) }"
|
|
60
|
-
kody execute --local --credential github=work --code "import { credential } from 'kody:runtime'\nexport default async function main() { const gh = await credential('github'); return { name: gh.name, hosts: gh.hosts } }"
|
|
61
|
-
kody status
|
|
62
|
-
kody whoami
|
|
63
|
-
kody logout
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The CLI opens a browser for Kody OAuth (PKCE + Client ID Metadata Documents). If
|
|
67
|
-
a browser cannot open, it prints the URL. Tokens (access + refresh) are stored
|
|
68
|
-
in the OS keychain on macOS, Windows, and Linux (Secret Service). Linux without
|
|
69
|
-
Secret Service — including headless machines that only have an in-memory kernel
|
|
70
|
-
keyring — falls back to a `0600` file under `$XDG_CONFIG_HOME/kody`.
|
|
71
|
-
|
|
72
|
-
Never ask the user to paste tokens into chat.
|
|
73
|
-
|
|
74
|
-
Override the MCP URL with `--mcp-url` or `KODY_MCP_URL` for preview or local
|
|
75
|
-
servers. Default: `https://kody.codes/mcp`.
|
|
76
|
-
|
|
77
|
-
To run execute with a scoped API token and **no** `kody login`, set
|
|
78
|
-
`KODY_API_TOKEN` (or `--token`). Cloud execute (no `--local`) goes through
|
|
79
|
-
CapabilityProxy → `kody.execute`. Add `--local` to run the module on this
|
|
80
|
-
machine instead (Node.js 22 or newer; older Node fails before workerd starts).
|
|
81
|
-
Modules with static `kody:@…` imports keep `--local`: the CLI fetches stamped
|
|
82
|
-
package modules via `POST /v1/local-execute/package-graph` and embeds them in
|
|
83
|
-
local workerd (CapabilityProxy only for per-call `kody:runtime` hops — not a
|
|
84
|
-
whole-module cloud defer). If that package-graph API is missing, `--local` fails
|
|
85
|
-
clearly rather than silently billing a remote execute. `--file` entries are
|
|
86
|
-
bundled (relative imports and npm packages; `kody:*` external) before workerd
|
|
87
|
-
loads them, matching hosted execute / publish. `--code` and stdin are not
|
|
88
|
-
rewritten.
|
|
89
|
-
|
|
90
|
-
For `execute --local` auth: `--token` / `KODY_API_TOKEN` wins when set;
|
|
91
|
-
otherwise a stored token from `kody auth bootstrap --code` (after MCP
|
|
92
|
-
`cliCredentialBootstrap`); otherwise a valid `kody login` session (OAuth access
|
|
93
|
-
token as Bearer only when the API and MCP URLs are paired — never print it,
|
|
94
|
-
never mint via `tokenCreate` under the hood). The default pair is
|
|
95
|
-
`https://api.kody.codes` and `https://kody.codes/mcp`; preview workers pair when
|
|
96
|
-
the API worker name adds `-api`, and loopback hosts pair at any port. For
|
|
97
|
-
another API origin, use `auth bootstrap --api-url <origin>` or set
|
|
98
|
-
`KODY_API_TOKEN`. A PR preview's API host is
|
|
99
|
-
`https://kody-pr-<n>-api.<subdomain>.workers.dev`, not the app origin
|
|
100
|
-
`kody-pr-<n>` (which 404s `/v1/*` with HTML). Prefer bootstrap over
|
|
101
|
-
`tokenCreate` for agents already on MCP so `kody_at_…` never appears in chat.
|
|
102
|
-
Until the Open API accepts MCP OAuth on CapabilityProxy / package-graph
|
|
103
|
-
(https://github.com/kody-hq/kody/issues/2812), use bootstrap or mint a scoped
|
|
104
|
-
token with the MCP `api` tool `tokenCreate` — include `local-execute` plus the
|
|
105
|
-
capability scopes the module calls — and pass `--token` or `KODY_API_TOKEN`. If
|
|
106
|
-
none of those are available, the CLI error says that (bootstrap → login →
|
|
107
|
-
tokenCreate for CI). `insufficient_scope` names the missing scope and prints the
|
|
108
|
-
exact command to mint a token that adds it:
|
|
109
|
-
`npx @kodycodes/cli auth bootstrap --lifetime short|long --scopes <list>` after
|
|
110
|
-
`kody login`, or
|
|
111
|
-
`cliCredentialBootstrap({ lifetime: "short"|"long", scopes: [...] })` from MCP
|
|
112
|
-
(hints preserve the current token's lifetime class when known). Default
|
|
113
|
-
bootstrap scopes stay least-privilege (no `package:write`), and `--scopes`
|
|
114
|
-
replaces them, so list every scope you need. Publish a package after
|
|
115
|
-
`packageGetGitRemote` clone/push with
|
|
116
|
-
`kody package publish <@owner/leaf|package_id>` (thin
|
|
117
|
-
`packagePublishExternalPush` wrapper; same auth as `kody api`). See and change
|
|
118
|
-
who can use a package (teams and org members of the `--org` org) with
|
|
119
|
-
`kody package collaborators <package>`,
|
|
120
|
-
`kody package grant <package> --team <slug>|--user <username> --preset use|contribute|manage`,
|
|
121
|
-
and
|
|
122
|
-
`kody package revoke <package> --team <slug>|--user <username>|--grant <id>`.
|
|
123
|
-
These need a token with `package:manage_access`. `feature_disabled` means the
|
|
124
|
-
account `local-execute` flag is off. Never read MCP OAuth tokens from the host.
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
# Agents on MCP:
|
|
128
|
-
# cliCredentialBootstrap → { bootstrap_code, cli_command }
|
|
129
|
-
npx @kodycodes/cli auth bootstrap --code 'kody_bc_…'
|
|
130
|
-
npx @kodycodes/cli execute --local --file ./task.js --params '{"q":"email"}'
|
|
131
|
-
# Opt in to private and local network access if needed:
|
|
132
|
-
npx @kodycodes/cli execute --local --allow-private-network --file ./task.js
|
|
133
|
-
|
|
134
|
-
Local execute is public-network-only by default. `--allow-private-network`
|
|
135
|
-
opts into private and local addresses; the loopback CapabilityProxy bridge
|
|
136
|
-
continues to work either way.
|
|
137
|
-
|
|
138
|
-
npx @kodycodes/cli login
|
|
139
|
-
npx @kodycodes/cli execute --local --file ./task.js --params '{"q":"email"}'
|
|
140
|
-
# Or with an explicit scoped token (wins over login / bootstrap store):
|
|
141
|
-
KODY_API_TOKEN=… npx @kodycodes/cli execute --local --file ./task.js --params '{"q":"email"}'
|
|
142
|
-
```
|
|
27
|
+
`kody skill install` copies this stub and refreshes the full hosted body when
|
|
28
|
+
reachable. Later CLI runs refresh local copies when the hosted digest changes.
|