azcodr 2.1.0 → 2.3.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/.agents/scripts/agent_guard.js +63 -0
- package/.agents/skills/lets-build/SKILL.md +1 -1
- package/.github/workflows/ci.yml +9 -0
- package/AGENTS.md +1 -1
- package/CONTRIBUTING.md +79 -0
- package/README.md +4 -3
- package/SECURITY.md +32 -0
- package/bin/azcodr.js +3 -1
- package/data/memory.template +36 -0
- package/docs/rules/clean_code.md +13 -0
- package/docs/tipping-points.md +37 -0
- package/lib/agent-guard-command.d.ts +28 -0
- package/lib/agent-guard-command.d.ts.map +1 -0
- package/lib/agent-guard-command.js +103 -0
- package/lib/agent-guard-command.js.map +1 -0
- package/lib/agent-guard-file.d.ts +32 -0
- package/lib/agent-guard-file.d.ts.map +1 -0
- package/lib/agent-guard-file.js +77 -0
- package/lib/agent-guard-file.js.map +1 -0
- package/lib/agent-guard-tdd.d.ts +34 -0
- package/lib/agent-guard-tdd.d.ts.map +1 -0
- package/lib/agent-guard-tdd.js +77 -0
- package/lib/agent-guard-tdd.js.map +1 -0
- package/lib/agent-guard.d.ts +38 -0
- package/lib/agent-guard.d.ts.map +1 -0
- package/lib/agent-guard.js +80 -0
- package/lib/agent-guard.js.map +1 -0
- package/lib/boundaries.d.ts +41 -0
- package/lib/boundaries.d.ts.map +1 -0
- package/lib/boundaries.js +158 -0
- package/lib/boundaries.js.map +1 -0
- package/lib/cli-parse.d.ts +4 -0
- package/lib/cli-parse.d.ts.map +1 -1
- package/lib/cli-parse.js +23 -5
- package/lib/cli-parse.js.map +1 -1
- package/lib/cli.d.ts +14 -0
- package/lib/cli.d.ts.map +1 -1
- package/lib/cli.js +33 -5
- package/lib/cli.js.map +1 -1
- package/lib/errors.d.ts +15 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +9 -0
- package/lib/errors.js.map +1 -1
- package/lib/git.d.ts +8 -0
- package/lib/git.d.ts.map +1 -1
- package/lib/git.js +8 -0
- package/lib/git.js.map +1 -1
- package/lib/guards.d.ts +22 -1
- package/lib/guards.d.ts.map +1 -1
- package/lib/guards.js +23 -2
- package/lib/guards.js.map +1 -1
- package/lib/index.d.ts +34 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +25 -0
- package/lib/index.js.map +1 -1
- package/lib/links.d.ts +14 -0
- package/lib/links.d.ts.map +1 -1
- package/lib/links.js +11 -0
- package/lib/links.js.map +1 -1
- package/lib/permissions.d.ts +4 -0
- package/lib/permissions.d.ts.map +1 -1
- package/lib/permissions.js +4 -0
- package/lib/permissions.js.map +1 -1
- package/lib/repo.d.ts +10 -0
- package/lib/repo.d.ts.map +1 -1
- package/lib/repo.js +11 -4
- package/lib/repo.js.map +1 -1
- package/lib/scaffold.d.ts +29 -5
- package/lib/scaffold.d.ts.map +1 -1
- package/lib/scaffold.js +27 -25
- package/lib/scaffold.js.map +1 -1
- package/lib/validate.d.ts +33 -0
- package/lib/validate.d.ts.map +1 -0
- package/lib/validate.js +24 -0
- package/lib/validate.js.map +1 -0
- package/memory.md +16 -0
- package/package.json +7 -6
- package/scripts/validate/links.js +0 -1
- package/scripts/validate/root.js +1 -1
- package/src/agent-guard-command.ts +118 -0
- package/src/agent-guard-file.ts +107 -0
- package/src/agent-guard-tdd.ts +96 -0
- package/src/agent-guard.ts +123 -0
- package/src/boundaries.ts +198 -0
- package/src/cli-parse.ts +26 -4
- package/src/cli.ts +41 -15
- package/src/errors.ts +15 -0
- package/src/git.ts +8 -0
- package/src/guards.ts +27 -2
- package/src/index.ts +61 -0
- package/src/links.ts +14 -0
- package/src/permissions.ts +4 -0
- package/src/repo.ts +14 -4
- package/src/scaffold.ts +42 -36
- package/src/validate.ts +47 -0
- package/scripts/test_coverage.js +0 -66
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtF,MAAM,GAAG,GAAqB,IAAI,CAAC,KAAK,CACtC,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAC7E,OAAO,CACR,CACF,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,MAA6B,OAAO,CAAC,GAAG;IAChE,GAAG,CAAC;UACI,GAAG,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/errors.d.ts
CHANGED
|
@@ -14,14 +14,29 @@ export declare const ERROR_CODES: {
|
|
|
14
14
|
readonly E_GIT_BLOCKED: "Blocked git subcommand";
|
|
15
15
|
readonly E_PATH_ESCAPE: "Path escapes allowed root";
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Union of valid machine-readable error codes for scaffolding failures.
|
|
19
|
+
*/
|
|
17
20
|
export type ScaffoldErrorCode = keyof typeof ERROR_CODES;
|
|
21
|
+
/**
|
|
22
|
+
* Structural interface contract for errors thrown by the scaffolder.
|
|
23
|
+
*/
|
|
18
24
|
export interface ScaffoldErrorShape extends Error {
|
|
19
25
|
name: 'ScaffoldError';
|
|
20
26
|
code: ScaffoldErrorCode;
|
|
21
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Custom error class thrown by scaffolding operations, carrying a machine-readable code.
|
|
30
|
+
*/
|
|
22
31
|
export declare class ScaffoldError extends Error implements ScaffoldErrorShape {
|
|
23
32
|
readonly name: 'ScaffoldError';
|
|
24
33
|
readonly code: ScaffoldErrorCode;
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new ScaffoldError instance.
|
|
36
|
+
*
|
|
37
|
+
* @param code - Machine-readable error code.
|
|
38
|
+
* @param message - Human-readable explanation of the error.
|
|
39
|
+
*/
|
|
25
40
|
constructor(code: ScaffoldErrorCode, message: string);
|
|
26
41
|
}
|
|
27
42
|
declare const _default: {
|
package/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,WAAW,CAAC;AAEzD,MAAM,WAAW,kBAAmB,SAAQ,KAAK;IAC/C,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBAAa,aAAc,SAAQ,KAAM,YAAW,kBAAkB;IACpE,SAAkB,IAAI,EAAE,eAAe,CAAmB;IAC1D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,WAAW,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,KAAK;IAC/C,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAM,YAAW,kBAAkB;IACpE,SAAkB,IAAI,EAAE,eAAe,CAAmB;IAC1D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAEjC;;;;;OAKG;gBACS,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;CAIrD;;;;;;;;;;;;AAED,wBAA8C"}
|
package/lib/errors.js
CHANGED
|
@@ -14,9 +14,18 @@ export const ERROR_CODES = {
|
|
|
14
14
|
E_GIT_BLOCKED: 'Blocked git subcommand',
|
|
15
15
|
E_PATH_ESCAPE: 'Path escapes allowed root'
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Custom error class thrown by scaffolding operations, carrying a machine-readable code.
|
|
19
|
+
*/
|
|
17
20
|
export class ScaffoldError extends Error {
|
|
18
21
|
name = 'ScaffoldError';
|
|
19
22
|
code;
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new ScaffoldError instance.
|
|
25
|
+
*
|
|
26
|
+
* @param code - Machine-readable error code.
|
|
27
|
+
* @param message - Human-readable explanation of the error.
|
|
28
|
+
*/
|
|
20
29
|
constructor(code, message) {
|
|
21
30
|
super(message);
|
|
22
31
|
this.code = code;
|
package/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,oBAAoB,EAAE,2DAA2D;IACjF,kBAAkB,EAAE,+BAA+B;IACnD,qBAAqB,EAAE,wDAAwD;IAC/E,kBAAkB,EAAE,wCAAwC;IAC5D,aAAa,EAAE,wBAAwB;IACvC,aAAa,EAAE,2BAA2B;CAClC,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,oBAAoB,EAAE,2DAA2D;IACjF,kBAAkB,EAAE,+BAA+B;IACnD,qBAAqB,EAAE,wDAAwD;IAC/E,kBAAkB,EAAE,wCAAwC;IAC5D,aAAa,EAAE,wBAAwB;IACvC,aAAa,EAAE,2BAA2B;CAClC,CAAC;AAeX;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpB,IAAI,GAAoB,eAAe,CAAC;IACjD,IAAI,CAAoB;IAEjC;;;;;OAKG;IACH,YAAY,IAAuB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
|
package/lib/git.d.ts
CHANGED
|
@@ -6,6 +6,14 @@ import cp from 'node:child_process';
|
|
|
6
6
|
* No network, no env exfiltration; cwd is constrained to targetDir callers.
|
|
7
7
|
*/
|
|
8
8
|
export declare const GIT_ALLOWED_SUBCOMMANDS: Set<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Safely executes an allowlisted git subcommand using execFileSync with an argument array and shell disabled.
|
|
11
|
+
*
|
|
12
|
+
* @param args - Subcommand and arguments array to pass to git.
|
|
13
|
+
* @param options - Child process execution options.
|
|
14
|
+
* @returns Standard output from git as a string.
|
|
15
|
+
* @throws {ScaffoldError} When args is empty or the subcommand is not in GIT_ALLOWED_SUBCOMMANDS.
|
|
16
|
+
*/
|
|
9
17
|
export declare function runGit(args: string[], options?: cp.ExecFileSyncOptions): string;
|
|
10
18
|
declare const _default: {
|
|
11
19
|
GIT_ALLOWED_SUBCOMMANDS: Set<string>;
|
package/lib/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGpC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,aAMlC,CAAC;AAEH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,EAAE,CAAC,mBAAwB,GAAG,MAAM,CAcnF;;;;;AAED,wBAAmD"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGpC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,aAMlC,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,EAAE,CAAC,mBAAwB,GAAG,MAAM,CAcnF;;;;;AAED,wBAAmD"}
|
package/lib/git.js
CHANGED
|
@@ -13,6 +13,14 @@ export const GIT_ALLOWED_SUBCOMMANDS = new Set([
|
|
|
13
13
|
'add',
|
|
14
14
|
'commit'
|
|
15
15
|
]);
|
|
16
|
+
/**
|
|
17
|
+
* Safely executes an allowlisted git subcommand using execFileSync with an argument array and shell disabled.
|
|
18
|
+
*
|
|
19
|
+
* @param args - Subcommand and arguments array to pass to git.
|
|
20
|
+
* @param options - Child process execution options.
|
|
21
|
+
* @returns Standard output from git as a string.
|
|
22
|
+
* @throws {ScaffoldError} When args is empty or the subcommand is not in GIT_ALLOWED_SUBCOMMANDS.
|
|
23
|
+
*/
|
|
16
24
|
export function runGit(args, options = {}) {
|
|
17
25
|
if (!Array.isArray(args) || args.length === 0) {
|
|
18
26
|
throw new ScaffoldError('E_GIT_ARGS_INVALID', ERROR_CODES.E_GIT_ARGS_INVALID);
|
package/lib/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IAC7C,WAAW;IACX,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,MAAM,CAAC,IAAc,EAAE,UAAkC,EAAE;IACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,aAAa,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAClC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAW,CAAC;AACf,CAAC;AAED,eAAe,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IAC7C,WAAW;IACX,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,IAAc,EAAE,UAAkC,EAAE;IACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,aAAa,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAClC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,KAAK;QACZ,GAAG,OAAO;KACX,CAAW,CAAC;AACf,CAAC;AAED,eAAe,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC"}
|
package/lib/guards.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the root filesystem directory of the azcodr template files.
|
|
3
|
+
*
|
|
4
|
+
* @returns Absolute filesystem path to the template root directory.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getTemplateDir(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Options for configuring protected target verification.
|
|
9
|
+
*/
|
|
1
10
|
export interface ProtectedTargetOptions {
|
|
2
11
|
templateDir?: string;
|
|
3
12
|
force?: boolean;
|
|
@@ -6,13 +15,21 @@ export interface ProtectedTargetOptions {
|
|
|
6
15
|
}
|
|
7
16
|
/**
|
|
8
17
|
* Filesystem scope guard (Supply Chain: filesystem access).
|
|
9
|
-
* Constrains all reads/writes to targetDir / templateDir.
|
|
18
|
+
* Constrains all reads/writes to targetDir / templateDir, throwing if candidate escapes root.
|
|
19
|
+
*
|
|
20
|
+
* @param root - Absolute base directory.
|
|
21
|
+
* @param candidate - Candidate file or directory path to check.
|
|
22
|
+
* @param message - Optional custom error message.
|
|
23
|
+
* @throws {ScaffoldError} When candidate path escapes root directory.
|
|
10
24
|
*/
|
|
11
25
|
export declare function assertInside(root: string, candidate: string, message?: string): void;
|
|
12
26
|
/**
|
|
13
27
|
* Normalizes a path for protected-target comparison. On Windows the filesystem
|
|
14
28
|
* is case-insensitive, so `C:\Users\Name` and `c:\users\name` are the same
|
|
15
29
|
* directory and must compare equal.
|
|
30
|
+
*
|
|
31
|
+
* @param p - File or directory path to normalize.
|
|
32
|
+
* @returns Normalized path string.
|
|
16
33
|
*/
|
|
17
34
|
export declare function normalizeForComparison(p: string): string;
|
|
18
35
|
/**
|
|
@@ -24,6 +41,10 @@ export declare function normalizeForComparison(p: string): string;
|
|
|
24
41
|
*
|
|
25
42
|
* Lexical comparison is not enough: a symlink pointing at home must also be
|
|
26
43
|
* caught, so an existing target is resolved with realpath before comparing.
|
|
44
|
+
*
|
|
45
|
+
* @param targetDir - The target directory path to evaluate.
|
|
46
|
+
* @param options - Optional configuration for protected target evaluation.
|
|
47
|
+
* @returns True if target is a protected location, false otherwise.
|
|
27
48
|
*/
|
|
28
49
|
export declare function isProtectedTarget(targetDir: string, options?: ProtectedTargetOptions): boolean;
|
|
29
50
|
declare const _default: {
|
package/lib/guards.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAOpF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxD;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CASlG;;;;;;AAED,wBAIE"}
|
package/lib/guards.js
CHANGED
|
@@ -2,11 +2,25 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import process from 'node:process';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
5
6
|
import { ScaffoldError, ERROR_CODES } from './errors.js';
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the root filesystem directory of the azcodr template files.
|
|
9
|
+
*
|
|
10
|
+
* @returns Absolute filesystem path to the template root directory.
|
|
11
|
+
*/
|
|
12
|
+
export function getTemplateDir() {
|
|
13
|
+
const currentDir = import.meta.dirname ?? path.dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
return path.resolve(currentDir, '..');
|
|
15
|
+
}
|
|
7
16
|
/**
|
|
8
17
|
* Filesystem scope guard (Supply Chain: filesystem access).
|
|
9
|
-
* Constrains all reads/writes to targetDir / templateDir.
|
|
18
|
+
* Constrains all reads/writes to targetDir / templateDir, throwing if candidate escapes root.
|
|
19
|
+
*
|
|
20
|
+
* @param root - Absolute base directory.
|
|
21
|
+
* @param candidate - Candidate file or directory path to check.
|
|
22
|
+
* @param message - Optional custom error message.
|
|
23
|
+
* @throws {ScaffoldError} When candidate path escapes root directory.
|
|
10
24
|
*/
|
|
11
25
|
export function assertInside(root, candidate, message) {
|
|
12
26
|
const resolvedRoot = path.resolve(root);
|
|
@@ -20,6 +34,9 @@ export function assertInside(root, candidate, message) {
|
|
|
20
34
|
* Normalizes a path for protected-target comparison. On Windows the filesystem
|
|
21
35
|
* is case-insensitive, so `C:\Users\Name` and `c:\users\name` are the same
|
|
22
36
|
* directory and must compare equal.
|
|
37
|
+
*
|
|
38
|
+
* @param p - File or directory path to normalize.
|
|
39
|
+
* @returns Normalized path string.
|
|
23
40
|
*/
|
|
24
41
|
export function normalizeForComparison(p) {
|
|
25
42
|
const resolved = path.resolve(p);
|
|
@@ -73,6 +90,10 @@ function resolvesToProtectedLocation(resolvedTarget, home) {
|
|
|
73
90
|
*
|
|
74
91
|
* Lexical comparison is not enough: a symlink pointing at home must also be
|
|
75
92
|
* caught, so an existing target is resolved with realpath before comparing.
|
|
93
|
+
*
|
|
94
|
+
* @param targetDir - The target directory path to evaluate.
|
|
95
|
+
* @param options - Optional configuration for protected target evaluation.
|
|
96
|
+
* @returns True if target is a protected location, false otherwise.
|
|
76
97
|
*/
|
|
77
98
|
export function isProtectedTarget(targetDir, options = {}) {
|
|
78
99
|
const resolvedTarget = path.resolve(targetDir);
|
package/lib/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @azcodr/azcodr
|
|
3
|
+
* Enterprise Architecture & Agentic Engineering Starter Template.
|
|
4
|
+
*
|
|
5
|
+
* Provides problem-first, topology-aligned project scaffolding with strict systemic atomicity,
|
|
6
|
+
* filesystem scope guards, git worktree initialization, and multi-agent harness parity.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Union type of all valid machine-readable error codes.
|
|
10
|
+
*/
|
|
1
11
|
export type ScaffoldErrorCode = 'E_TARGET_IS_TEMPLATE' | 'E_TARGET_NOT_EMPTY' | 'E_TARGET_IS_PROTECTED' | 'E_GIT_ARGS_INVALID' | 'E_GIT_BLOCKED' | 'E_PATH_ESCAPE';
|
|
12
|
+
/**
|
|
13
|
+
* Core scaffolding functions, guards, utilities, error classes, and constants.
|
|
14
|
+
*/
|
|
2
15
|
export { scaffold, validateTarget, copyTemplate, ensureSymlink, ensureSymlinkOrPointer, isSameCaseInsensitiveFile, makeScriptsExecutable, initGit, isInsideGitWorkTree, runGit, assertInside, isProtectedTarget, getTemplateDir, TEMPLATE_ITEMS, ScaffoldError, ERROR_CODES } from './scaffold.js';
|
|
16
|
+
/**
|
|
17
|
+
* Standalone architecture validation engine.
|
|
18
|
+
*/
|
|
19
|
+
export { validate, createSilentReporter } from './validate.js';
|
|
20
|
+
export type { ValidationResult, ValidationReporter } from './validate.js';
|
|
21
|
+
/**
|
|
22
|
+
* Agent-runtime architectural enforcement and safety guards.
|
|
23
|
+
*/
|
|
24
|
+
export { inspectPreTool, inspectCommand, inspectFileWrite, inspectTddRequirement, readTddState, writeTddState } from './agent-guard.js';
|
|
25
|
+
export type { GuardDecision, GuardOptions, ToolEnvelope, CommandViolation, FileCheckResult, SessionTddState } from './agent-guard.js';
|
|
26
|
+
/**
|
|
27
|
+
* Architectural boundary enforcement and dependency cycle prevention.
|
|
28
|
+
*/
|
|
29
|
+
export { inspectBoundaries, detectDependencyCycles, detectBoundaryViolations, findSourceFiles, extractLocalImports, buildDependencyGraph, DEFAULT_BOUNDARY_RULES } from './boundaries.js';
|
|
30
|
+
export type { BoundaryRule, BoundaryViolation, BoundaryReport } from './boundaries.js';
|
|
31
|
+
/**
|
|
32
|
+
* Type definitions and option interfaces for scaffolding operations.
|
|
33
|
+
*/
|
|
3
34
|
export type { ScaffoldOptions, ScaffoldResult, ValidateTargetOptions, CopyTemplateOptions, EnsureSymlinkOptions, InitGitOptions, ScaffoldErrorShape } from './scaffold.js';
|
|
4
35
|
import scaffoldModule from './scaffold.js';
|
|
36
|
+
/**
|
|
37
|
+
* Default export providing the unified azcodr scaffolding module.
|
|
38
|
+
*/
|
|
5
39
|
export default scaffoldModule;
|
|
6
40
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,eAAe,GACf,eAAe,CAAC;AAEpB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,cAAc,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,eAAe,GACf,eAAe,CAAC;AAEpB;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE1E;;GAEG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvF;;GAEG;AACH,YAAY,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,cAAc,MAAM,eAAe,CAAC;AAE3C;;GAEG;AACH,eAAe,cAAc,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @azcodr/azcodr
|
|
3
|
+
* Enterprise Architecture & Agentic Engineering Starter Template.
|
|
4
|
+
*
|
|
5
|
+
* Provides problem-first, topology-aligned project scaffolding with strict systemic atomicity,
|
|
6
|
+
* filesystem scope guards, git worktree initialization, and multi-agent harness parity.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Core scaffolding functions, guards, utilities, error classes, and constants.
|
|
10
|
+
*/
|
|
1
11
|
export { scaffold, validateTarget, copyTemplate, ensureSymlink, ensureSymlinkOrPointer, isSameCaseInsensitiveFile, makeScriptsExecutable, initGit, isInsideGitWorkTree, runGit, assertInside, isProtectedTarget, getTemplateDir, TEMPLATE_ITEMS, ScaffoldError, ERROR_CODES } from './scaffold.js';
|
|
12
|
+
/**
|
|
13
|
+
* Standalone architecture validation engine.
|
|
14
|
+
*/
|
|
15
|
+
export { validate, createSilentReporter } from './validate.js';
|
|
16
|
+
/**
|
|
17
|
+
* Agent-runtime architectural enforcement and safety guards.
|
|
18
|
+
*/
|
|
19
|
+
export { inspectPreTool, inspectCommand, inspectFileWrite, inspectTddRequirement, readTddState, writeTddState } from './agent-guard.js';
|
|
20
|
+
/**
|
|
21
|
+
* Architectural boundary enforcement and dependency cycle prevention.
|
|
22
|
+
*/
|
|
23
|
+
export { inspectBoundaries, detectDependencyCycles, detectBoundaryViolations, findSourceFiles, extractLocalImports, buildDependencyGraph, DEFAULT_BOUNDARY_RULES } from './boundaries.js';
|
|
2
24
|
import scaffoldModule from './scaffold.js';
|
|
25
|
+
/**
|
|
26
|
+
* Default export providing the unified azcodr scaffolding module.
|
|
27
|
+
*/
|
|
3
28
|
export default scaffoldModule;
|
|
4
29
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG/D;;GAEG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACd,MAAM,kBAAkB,CAAC;AAU1B;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,cAAc,MAAM,eAAe,CAAC;AAE3C;;GAEG;AACH,eAAe,cAAc,CAAC"}
|
package/lib/links.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for symlink and pointer creation.
|
|
3
|
+
*/
|
|
1
4
|
export interface EnsureSymlinkOptions {
|
|
2
5
|
targetDir: string;
|
|
3
6
|
linkName: string;
|
|
@@ -7,16 +10,27 @@ export interface EnsureSymlinkOptions {
|
|
|
7
10
|
/**
|
|
8
11
|
* Detects whether linkName and targetFileName refer to the same entry on a case-insensitive filesystem.
|
|
9
12
|
* Uses exact directory listing (not existsSync, which lies on case-insensitive systems).
|
|
13
|
+
*
|
|
14
|
+
* @param targetDir - Directory containing the file entries.
|
|
15
|
+
* @param linkName - Name of the proposed symlink or alias entry.
|
|
16
|
+
* @param targetFileName - Target file name to match against.
|
|
17
|
+
* @returns True if both names resolve to the same disk file on a case-insensitive filesystem.
|
|
10
18
|
*/
|
|
11
19
|
export declare function isSameCaseInsensitiveFile(targetDir: string, linkName: string, targetFileName: string): boolean;
|
|
12
20
|
/**
|
|
13
21
|
* Safely creates or updates a symbolic link, falling back to a file copy if symlinks are unsupported.
|
|
22
|
+
*
|
|
23
|
+
* @param options - Options specifying target directory, link name, target file name, and dry-run mode.
|
|
24
|
+
* @returns True if the symlink or copy fallback was successfully established.
|
|
14
25
|
*/
|
|
15
26
|
export declare function ensureSymlink(options: EnsureSymlinkOptions): boolean;
|
|
16
27
|
/**
|
|
17
28
|
* Creates a symlink, falling back to a text pointer (not a full copy).
|
|
18
29
|
* Used for .github/copilot-instructions.md where a full AGENTS.md copy would
|
|
19
30
|
* break relative markdown links (they resolve from .github/, not root).
|
|
31
|
+
*
|
|
32
|
+
* @param options - Options specifying target directory, link name, target file name, and dry-run mode.
|
|
33
|
+
* @returns True if the symlink or pointer fallback was successfully established.
|
|
20
34
|
*/
|
|
21
35
|
export declare function ensureSymlinkOrPointer(options: EnsureSymlinkOptions): boolean;
|
|
22
36
|
declare const _default: {
|
package/lib/links.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6DD
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6DD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAWT;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAapE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAmB7E;;;;;;AAED,wBAIE"}
|
package/lib/links.js
CHANGED
|
@@ -56,6 +56,11 @@ function copyFallback(targetDir, linkName, targetFileName) {
|
|
|
56
56
|
/**
|
|
57
57
|
* Detects whether linkName and targetFileName refer to the same entry on a case-insensitive filesystem.
|
|
58
58
|
* Uses exact directory listing (not existsSync, which lies on case-insensitive systems).
|
|
59
|
+
*
|
|
60
|
+
* @param targetDir - Directory containing the file entries.
|
|
61
|
+
* @param linkName - Name of the proposed symlink or alias entry.
|
|
62
|
+
* @param targetFileName - Target file name to match against.
|
|
63
|
+
* @returns True if both names resolve to the same disk file on a case-insensitive filesystem.
|
|
59
64
|
*/
|
|
60
65
|
export function isSameCaseInsensitiveFile(targetDir, linkName, targetFileName) {
|
|
61
66
|
if (linkName === targetFileName)
|
|
@@ -74,6 +79,9 @@ export function isSameCaseInsensitiveFile(targetDir, linkName, targetFileName) {
|
|
|
74
79
|
}
|
|
75
80
|
/**
|
|
76
81
|
* Safely creates or updates a symbolic link, falling back to a file copy if symlinks are unsupported.
|
|
82
|
+
*
|
|
83
|
+
* @param options - Options specifying target directory, link name, target file name, and dry-run mode.
|
|
84
|
+
* @returns True if the symlink or copy fallback was successfully established.
|
|
77
85
|
*/
|
|
78
86
|
export function ensureSymlink(options) {
|
|
79
87
|
const { targetDir, linkName, targetFileName, dryRun = false } = options;
|
|
@@ -96,6 +104,9 @@ export function ensureSymlink(options) {
|
|
|
96
104
|
* Creates a symlink, falling back to a text pointer (not a full copy).
|
|
97
105
|
* Used for .github/copilot-instructions.md where a full AGENTS.md copy would
|
|
98
106
|
* break relative markdown links (they resolve from .github/, not root).
|
|
107
|
+
*
|
|
108
|
+
* @param options - Options specifying target directory, link name, target file name, and dry-run mode.
|
|
109
|
+
* @returns True if the symlink or pointer fallback was successfully established.
|
|
99
110
|
*/
|
|
100
111
|
export function ensureSymlinkOrPointer(options) {
|
|
101
112
|
const { targetDir, linkName, targetFileName, dryRun = false } = options;
|
package/lib/links.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"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"}
|
package/lib/permissions.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ensures all bash scripts in agent and skill directories have executable permissions (0o755).
|
|
3
|
+
*
|
|
4
|
+
* @param targetDir - Root directory containing .agents and skills.
|
|
5
|
+
* @param dryRun - When true, simulates permission changes without modifying disk.
|
|
6
|
+
* @returns Array of file paths that were modified or would be modified.
|
|
3
7
|
*/
|
|
4
8
|
export declare function makeScriptsExecutable(targetDir: string, dryRun?: boolean): string[];
|
|
5
9
|
declare const _default: {
|
package/lib/permissions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAyBA
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,EAAE,CAWjF;;;;AAED,wBAAyC"}
|
package/lib/permissions.js
CHANGED
|
@@ -26,6 +26,10 @@ function chmodShFilesIn(scriptsDir, dryRun) {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Ensures all bash scripts in agent and skill directories have executable permissions (0o755).
|
|
29
|
+
*
|
|
30
|
+
* @param targetDir - Root directory containing .agents and skills.
|
|
31
|
+
* @param dryRun - When true, simulates permission changes without modifying disk.
|
|
32
|
+
* @returns Array of file paths that were modified or would be modified.
|
|
29
33
|
*/
|
|
30
34
|
export function makeScriptsExecutable(targetDir, dryRun = false) {
|
|
31
35
|
const agentScriptsDir = path.join(targetDir, '.agents', 'scripts');
|
package/lib/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,WAAW,CAAC,QAAgB,EAAE,MAAe;IACpD,IAAI,MAAM;QAAE,OAAO;IACnB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,MAAe;IACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC1F,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,WAAW,CAAC,QAAgB,EAAE,MAAe;IACpD,IAAI,MAAM;QAAE,OAAO;IACnB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,MAAe;IACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC1F,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,MAAM,GAAG,KAAK;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
|
package/lib/repo.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options controlling git repository initialization.
|
|
3
|
+
*/
|
|
1
4
|
export interface InitGitOptions {
|
|
2
5
|
noGit?: boolean;
|
|
3
6
|
dryRun?: boolean;
|
|
@@ -5,11 +8,18 @@ export interface InitGitOptions {
|
|
|
5
8
|
/**
|
|
6
9
|
* Detects whether targetDir is already inside an existing Git worktree.
|
|
7
10
|
* Socket note: shell access is limited to `git rev-parse` via runGit (no shell).
|
|
11
|
+
*
|
|
12
|
+
* @param targetDir - Directory path to inspect.
|
|
13
|
+
* @returns True if target directory is within a git worktree, false otherwise.
|
|
8
14
|
*/
|
|
9
15
|
export declare function isInsideGitWorkTree(targetDir: string): boolean;
|
|
10
16
|
/**
|
|
11
17
|
* Initializes a git repository in the target directory if not already inside one.
|
|
12
18
|
* Socket note: only allowlisted `git init/branch/add/commit` via execFileSync, cwd scoped.
|
|
19
|
+
*
|
|
20
|
+
* @param targetDir - Directory where git repository should be initialized.
|
|
21
|
+
* @param options - Configuration options for git initialization.
|
|
22
|
+
* @returns True if repository was initialized and committed, false otherwise.
|
|
13
23
|
*/
|
|
14
24
|
export declare function initGit(targetDir: string, options?: InitGitOptions): boolean;
|
|
15
25
|
declare const _default: {
|
package/lib/repo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW9D;AA8CD;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAchF;;;;;AAED,wBAAgD"}
|
package/lib/repo.js
CHANGED
|
@@ -6,6 +6,9 @@ const INITIAL_COMMIT_MESSAGE = 'chore: initial scaffold from azcodr template';
|
|
|
6
6
|
/**
|
|
7
7
|
* Detects whether targetDir is already inside an existing Git worktree.
|
|
8
8
|
* Socket note: shell access is limited to `git rev-parse` via runGit (no shell).
|
|
9
|
+
*
|
|
10
|
+
* @param targetDir - Directory path to inspect.
|
|
11
|
+
* @returns True if target directory is within a git worktree, false otherwise.
|
|
9
12
|
*/
|
|
10
13
|
export function isInsideGitWorkTree(targetDir) {
|
|
11
14
|
try {
|
|
@@ -47,10 +50,10 @@ function commitWithFallbackIdentity(targetDir) {
|
|
|
47
50
|
...options,
|
|
48
51
|
env: {
|
|
49
52
|
...process.env,
|
|
50
|
-
GIT_AUTHOR_NAME: '
|
|
51
|
-
GIT_AUTHOR_EMAIL: '
|
|
52
|
-
GIT_COMMITTER_NAME: '
|
|
53
|
-
GIT_COMMITTER_EMAIL: '
|
|
53
|
+
GIT_AUTHOR_NAME: 'azcodr[bot]',
|
|
54
|
+
GIT_AUTHOR_EMAIL: 'bot@azcodr.internal',
|
|
55
|
+
GIT_COMMITTER_NAME: 'azcodr[bot]',
|
|
56
|
+
GIT_COMMITTER_EMAIL: 'bot@azcodr.internal'
|
|
54
57
|
}
|
|
55
58
|
});
|
|
56
59
|
}
|
|
@@ -67,6 +70,10 @@ function initialCommit(targetDir) {
|
|
|
67
70
|
/**
|
|
68
71
|
* Initializes a git repository in the target directory if not already inside one.
|
|
69
72
|
* Socket note: only allowlisted `git init/branch/add/commit` via execFileSync, cwd scoped.
|
|
73
|
+
*
|
|
74
|
+
* @param targetDir - Directory where git repository should be initialized.
|
|
75
|
+
* @param options - Configuration options for git initialization.
|
|
76
|
+
* @returns True if repository was initialized and committed, false otherwise.
|
|
70
77
|
*/
|
|
71
78
|
export function initGit(targetDir, options = {}) {
|
|
72
79
|
const { noGit = false, dryRun = false } = options;
|
package/lib/repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,sBAAsB,GAAG,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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"}
|