traits 0.4.0 → 0.5.1
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/Assessment.ts +14 -0
- package/LICENSE +203 -0
- package/Source.ts +13 -0
- package/Trait.ts +51 -0
- package/TraitConflict.ts +52 -0
- package/TraitDerivation.ts +137 -0
- package/TraitEvaluation.ts +69 -0
- package/TraitStore.ts +88 -0
- package/TraitsConfig.ts +57 -0
- package/TraitsContext.ts +11 -0
- package/_util/Approval.ts +59 -0
- package/_util/Git.ts +25 -0
- package/_util/TraitsConfigProvider.ts +22 -0
- package/_util/TraitsTelemetry.ts +20 -0
- package/_util/words.ts +555 -0
- package/bin.ts +65 -0
- package/dist/Assessment.d.ts +12 -0
- package/dist/Assessment.d.ts.map +1 -0
- package/dist/Assessment.js +12 -0
- package/dist/Assessment.js.map +1 -0
- package/dist/Source.d.ts +21 -0
- package/dist/Source.d.ts.map +1 -0
- package/dist/Source.js +10 -0
- package/dist/Source.js.map +1 -0
- package/dist/Trait.d.ts +12 -0
- package/dist/Trait.d.ts.map +1 -0
- package/dist/Trait.js +44 -0
- package/dist/Trait.js.map +1 -0
- package/dist/TraitConflict.d.ts +56 -0
- package/dist/TraitConflict.d.ts.map +1 -0
- package/dist/TraitConflict.js +47 -0
- package/dist/TraitConflict.js.map +1 -0
- package/dist/TraitDerivation.d.ts +99 -0
- package/dist/TraitDerivation.d.ts.map +1 -0
- package/dist/TraitDerivation.js +109 -0
- package/dist/TraitDerivation.js.map +1 -0
- package/dist/TraitEvaluation.d.ts +68 -0
- package/dist/TraitEvaluation.d.ts.map +1 -0
- package/dist/TraitEvaluation.js +61 -0
- package/dist/TraitEvaluation.js.map +1 -0
- package/dist/TraitStore.d.ts +17 -0
- package/dist/TraitStore.d.ts.map +1 -0
- package/dist/TraitStore.js +57 -0
- package/dist/TraitStore.js.map +1 -0
- package/dist/TraitsConfig.d.ts +14 -0
- package/dist/TraitsConfig.d.ts.map +1 -0
- package/dist/TraitsConfig.js +40 -0
- package/dist/TraitsConfig.js.map +1 -0
- package/dist/TraitsContext.d.ts +11 -0
- package/dist/TraitsContext.d.ts.map +1 -0
- package/dist/TraitsContext.js +4 -0
- package/dist/TraitsContext.js.map +1 -0
- package/dist/_util/Approval.d.ts +28 -0
- package/dist/_util/Approval.d.ts.map +1 -0
- package/dist/_util/Approval.js +48 -0
- package/dist/_util/Approval.js.map +1 -0
- package/dist/_util/Git.d.ts +15 -0
- package/dist/_util/Git.d.ts.map +1 -0
- package/dist/_util/Git.js +17 -0
- package/dist/_util/Git.js.map +1 -0
- package/dist/_util/TraitsConfigProvider.d.ts +3 -0
- package/dist/_util/TraitsConfigProvider.d.ts.map +1 -0
- package/dist/_util/TraitsConfigProvider.js +17 -0
- package/dist/_util/TraitsConfigProvider.js.map +1 -0
- package/dist/_util/TraitsTelemetry.d.ts +3 -0
- package/dist/_util/TraitsTelemetry.d.ts.map +1 -0
- package/dist/_util/TraitsTelemetry.js +12 -0
- package/dist/_util/TraitsTelemetry.js.map +1 -0
- package/dist/_util/words.d.ts +2 -0
- package/dist/_util/words.d.ts.map +1 -0
- package/dist/_util/words.js +556 -0
- package/dist/_util/words.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +60 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +72 -0
- package/dist/main.js.map +1 -0
- package/dist/package.json +52 -0
- package/dist/test/TraitIgnores.test.d.ts +2 -0
- package/dist/test/TraitIgnores.test.d.ts.map +1 -0
- package/dist/test/TraitIgnores.test.js +20 -0
- package/dist/test/TraitIgnores.test.js.map +1 -0
- package/dist/toolkit/CheckTraits.d.ts +79 -0
- package/dist/toolkit/CheckTraits.d.ts.map +1 -0
- package/dist/toolkit/CheckTraits.js +114 -0
- package/dist/toolkit/CheckTraits.js.map +1 -0
- package/dist/toolkit/DeriveTrait.d.ts +108 -0
- package/dist/toolkit/DeriveTrait.d.ts.map +1 -0
- package/dist/toolkit/DeriveTrait.js +54 -0
- package/dist/toolkit/DeriveTrait.js.map +1 -0
- package/dist/toolkit/toolkit.d.ts +3 -0
- package/dist/toolkit/toolkit.d.ts.map +1 -0
- package/dist/toolkit/toolkit.js +6 -0
- package/dist/toolkit/toolkit.js.map +1 -0
- package/dist/traitIgnores.d.ts +3 -0
- package/dist/traitIgnores.d.ts.map +1 -0
- package/dist/traitIgnores.js +17 -0
- package/dist/traitIgnores.js.map +1 -0
- package/index.ts +9 -0
- package/main.ts +111 -0
- package/package.json +45 -0
- package/skills/traits/SKILL.md +339 -0
- package/toolkit/CheckTraits.ts +154 -0
- package/toolkit/DeriveTrait.ts +59 -0
- package/toolkit/toolkit.ts +9 -0
- package/traitIgnores.ts +14 -0
- 1289345811335-0.8567837113514543/lib/traits.js +0 -662
- 1289345811335-0.8567837113514543/package.json +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsConfig.d.ts","sourceRoot":"","sources":["../TraitsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAiB,KAAK,EAAc,MAAM,IAAI,CAAC,EAAa,MAAM,QAAQ,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AACnD,eAAO,MAAM,YAAY;;;;;EAoBvB,CAAA;AAEF,eAAO,MAAM,KAAK,8RAyBG,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { Array, Effect, Layer, Path, pipe, Schema as S, Semaphore } from "effect";
|
|
10
|
+
import { DecisionModel, LanguageModel } from "effect/ai";
|
|
11
|
+
import { HttpClient } from "effect/http";
|
|
12
|
+
import { getWorktreeRoot } from "./_util/Git.js";
|
|
13
|
+
import { TraitsContext } from "./TraitsContext.js";
|
|
14
|
+
export const TraitsConfig = S.Struct({
|
|
15
|
+
excludeGitignored: S.Boolean.pipe(S.optional).annotate({
|
|
16
|
+
description: "Exclude Git-ignored files from checks by default. Set false to disable the Git file-set filter."
|
|
17
|
+
}),
|
|
18
|
+
excludes: S.Array(S.NonEmptyString).pipe(S.optional).annotate({
|
|
19
|
+
description: "Filenames or native filesystem glob patterns excluded from trait checks, relative to traits.ts or absolute. Use directory/** to exclude a subtree. Bare directories are not expanded; escape glob characters in literal filenames using native glob syntax."
|
|
20
|
+
}),
|
|
21
|
+
layerDecisionModel: S.declare((value) => Layer.isLayer(value)),
|
|
22
|
+
layerLanguageModel: S.declare((value) => Layer.isLayer(value))
|
|
23
|
+
});
|
|
24
|
+
export const layer = Effect.gen(function* () {
|
|
25
|
+
const path = yield* Path.Path;
|
|
26
|
+
const configRoot = yield* getWorktreeRoot;
|
|
27
|
+
const url = yield* path.toFileUrl(path.join(configRoot, "traits.ts"));
|
|
28
|
+
const module = yield* Effect.promise(() => import(__rewriteRelativeImportExtension(url.href)));
|
|
29
|
+
const config = yield* pipe(module.default, S.decodeUnknownEffect(TraitsConfig));
|
|
30
|
+
return Layer.mergeAll(
|
|
31
|
+
// oxlint-disable-next-line effecttsgo/any-unknown-in-error-context
|
|
32
|
+
config.layerDecisionModel.pipe(Layer.orDie),
|
|
33
|
+
// oxlint-disable-next-line effecttsgo/any-unknown-in-error-context
|
|
34
|
+
config.layerLanguageModel.pipe(Layer.orDie), Layer.effect(TraitsContext, Effect.gen(function* () {
|
|
35
|
+
const excludes = Array.appendAll(Array.flatMap([".git", ".worktrees"], (directory) => [`**/${directory}`, `**/${directory}/**`]), Array.map(config.excludes ?? [], (pattern) => path.isAbsolute(pattern) ? path.relative(configRoot, pattern) : pattern));
|
|
36
|
+
const semaphore = yield* Semaphore.make(4);
|
|
37
|
+
return { configRoot, excludeGitignored: config.excludeGitignored ?? true, excludes, semaphore };
|
|
38
|
+
})));
|
|
39
|
+
}).pipe(Layer.unwrap);
|
|
40
|
+
//# sourceMappingURL=TraitsConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsConfig.js","sourceRoot":"","sources":["../TraitsConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Context, Semaphore } from "effect";
|
|
2
|
+
declare const TraitsContext_base: Context.ServiceClass<TraitsContext, "traits/TraitsContext", {
|
|
3
|
+
readonly configRoot: string;
|
|
4
|
+
readonly excludeGitignored: boolean;
|
|
5
|
+
readonly excludes: ReadonlyArray<string>;
|
|
6
|
+
readonly semaphore: Semaphore.Semaphore;
|
|
7
|
+
}>;
|
|
8
|
+
export declare class TraitsContext extends TraitsContext_base {
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=TraitsContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsContext.d.ts","sourceRoot":"","sources":["../TraitsContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;;yBAKlB,MAAM;gCACC,OAAO;uBAChB,aAAa,CAAC,MAAM,CAAC;wBACpB,SAAS,CAAC,SAAS;;AAN3C,qBAAa,aAAc,SAAQ,kBAQR;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsContext.js","sourceRoot":"","sources":["../TraitsContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAQ/C,CAAC,sBAAsB,CAAC;CAAG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Effect, Schema as S } from "effect";
|
|
2
|
+
import { McpSchema } from "effect/ai";
|
|
3
|
+
export type Approval = typeof Approval.Type;
|
|
4
|
+
export declare const Approval: S.TaggedUnion<{
|
|
5
|
+
readonly ApprovalRequired: S.TaggedStruct<"ApprovalRequired", {
|
|
6
|
+
readonly message: S.String;
|
|
7
|
+
}>;
|
|
8
|
+
readonly Approved: S.TaggedStruct<"Approved", {}>;
|
|
9
|
+
readonly Declined: S.TaggedStruct<"Declined", {}>;
|
|
10
|
+
readonly RevisionRequired: S.TaggedStruct<"RevisionRequired", {
|
|
11
|
+
readonly feedback: S.String;
|
|
12
|
+
}>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const request: (options: {
|
|
15
|
+
readonly message: string;
|
|
16
|
+
readonly approved?: boolean | undefined;
|
|
17
|
+
}) => Effect.Effect<{
|
|
18
|
+
readonly _tag: "ApprovalRequired";
|
|
19
|
+
readonly message: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly _tag: "Approved";
|
|
22
|
+
} | {
|
|
23
|
+
readonly _tag: "Declined";
|
|
24
|
+
} | {
|
|
25
|
+
readonly _tag: "RevisionRequired";
|
|
26
|
+
readonly feedback: string;
|
|
27
|
+
}, McpSchema.ElicitationDeclined, never>;
|
|
28
|
+
//# sourceMappingURL=Approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Approval.d.ts","sourceRoot":"","sources":["../../_util/Approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,IAAI,CAAC,EAAU,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAa,MAAM,WAAW,CAAA;AAEhD,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAC3C,eAAO,MAAM,QAAQ;;;;;;;;;EAKnB,CAAA;AAEF,eAAO,MAAM,OAAO;sBACA,MAAM;wBACJ,OAAO,GAAG,SAAS;;;;;;;;;;;wCA6CvC,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Effect, Option, Schema as S, String } from "effect";
|
|
2
|
+
import { McpSchema, McpServer } from "effect/ai";
|
|
3
|
+
export const Approval = S.TaggedUnion({
|
|
4
|
+
Approved: {},
|
|
5
|
+
ApprovalRequired: { message: S.String },
|
|
6
|
+
RevisionRequired: { feedback: S.String },
|
|
7
|
+
Declined: {}
|
|
8
|
+
});
|
|
9
|
+
export const request = Effect.fn("Approval.request")(function* (options) {
|
|
10
|
+
const client = yield* Effect.serviceOption(McpSchema.McpServerClient).pipe(Effect.map(Option.getOrUndefined));
|
|
11
|
+
const supportsForm = client !== undefined &&
|
|
12
|
+
client.clientCapabilities.elicitation !== undefined &&
|
|
13
|
+
(client.clientCapabilities.elicitation.form !== undefined ||
|
|
14
|
+
client.clientCapabilities.elicitation.url === undefined);
|
|
15
|
+
const globalForms = client !== undefined &&
|
|
16
|
+
(String.toLowerCase(client.clientInfo.name) === "opencode" ||
|
|
17
|
+
typeof client.requestMetadata?.["ai.opencode/sessionID"] === "string");
|
|
18
|
+
if (client === undefined || !supportsForm || globalForms) {
|
|
19
|
+
return options.approved === true
|
|
20
|
+
? Approval.cases.Approved.make({})
|
|
21
|
+
: Approval.cases.ApprovalRequired.make({ message: options.message });
|
|
22
|
+
}
|
|
23
|
+
const response = yield* McpServer.elicit({
|
|
24
|
+
message: options.message,
|
|
25
|
+
schema: S.Struct({
|
|
26
|
+
decision: S.Literals(["approve", "revise", "skip"]).annotate({
|
|
27
|
+
description: "Approve this exact proposal, request a revision, or skip it."
|
|
28
|
+
}),
|
|
29
|
+
feedback: S.String.pipe(S.optionalKey).annotate({ description: "Optional revision or alternative wording." })
|
|
30
|
+
})
|
|
31
|
+
}).pipe(Effect.provideService(McpSchema.McpServerClient, client), Effect.catchTags({
|
|
32
|
+
ElicitationDeclined: (error) => (error.cause === undefined ? Effect.undefined : error)
|
|
33
|
+
}));
|
|
34
|
+
if (response === undefined || response.decision === "skip")
|
|
35
|
+
return Approval.cases.Declined.make({});
|
|
36
|
+
if (response.decision === "revise" || (response.feedback !== undefined && String.trim(response.feedback) !== "")) {
|
|
37
|
+
const feedback = response.feedback === undefined ? "" : String.trim(response.feedback);
|
|
38
|
+
const guidance = String.stripMargin(`
|
|
39
|
+
| Ask the user for revision details using an interactive question with free-text input.
|
|
40
|
+
| Keep this proposal pending; do not infer approval or cancel it because of a related follow-up task.
|
|
41
|
+
`);
|
|
42
|
+
return Approval.cases.RevisionRequired.make({
|
|
43
|
+
feedback: feedback !== "" ? feedback : guidance
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return Approval.cases.Approved.make({});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=Approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Approval.js","sourceRoot":"","sources":["../../_util/Approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect, Path } from "effect";
|
|
2
|
+
import { ChildProcessSpawner } from "effect/process";
|
|
3
|
+
declare const GitRootError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
4
|
+
readonly _tag: "GitRootError";
|
|
5
|
+
} & Readonly<A>;
|
|
6
|
+
export declare class GitRootError extends GitRootError_base<{
|
|
7
|
+
readonly message: string;
|
|
8
|
+
}> {
|
|
9
|
+
}
|
|
10
|
+
/** The current checkout root, including when running in a linked worktree. */
|
|
11
|
+
export declare const getWorktreeRoot: Effect.Effect<string, GitRootError | import("effect/PlatformError").PlatformError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
12
|
+
/** The main checkout root, shared by its linked worktrees. */
|
|
13
|
+
export declare const getGitRoot: Effect.Effect<string, GitRootError | import("effect/PlatformError").PlatformError, ChildProcessSpawner.ChildProcessSpawner | Path.Path>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=Git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Git.d.ts","sourceRoot":"","sources":["../../_util/Git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAA;AACnD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;;;;AAElE,qBAAa,YAAa,SAAQ,kBAAiC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;CAAG;AAanG,8EAA8E;AAC9E,eAAO,MAAM,eAAe,6HAAgE,CAAA;AAE5F,8DAA8D;AAC9D,eAAO,MAAM,UAAU,yIAIrB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Data, Effect, Path, String } from "effect";
|
|
2
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
3
|
+
export class GitRootError extends Data.TaggedError("GitRootError") {
|
|
4
|
+
}
|
|
5
|
+
const resolveRoot = Effect.fn("Git.resolveRoot")(function* (command) {
|
|
6
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
7
|
+
return yield* spawner.string(command).pipe(Effect.map(String.trim), Effect.filterOrFail(String.isNonEmpty, () => new GitRootError({ message: "Run from inside a Git repository or worktree" })));
|
|
8
|
+
});
|
|
9
|
+
/** The current checkout root, including when running in a linked worktree. */
|
|
10
|
+
export const getWorktreeRoot = resolveRoot(ChildProcess.make `git rev-parse --show-toplevel`);
|
|
11
|
+
/** The main checkout root, shared by its linked worktrees. */
|
|
12
|
+
export const getGitRoot = Effect.gen(function* () {
|
|
13
|
+
const path = yield* Path.Path;
|
|
14
|
+
const gitDir = yield* resolveRoot(ChildProcess.make `git rev-parse --path-format=absolute --git-common-dir`);
|
|
15
|
+
return path.dirname(gitDir);
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=Git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Git.js","sourceRoot":"","sources":["../../_util/Git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAA+B;CAAG;AAEnG,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAA6B;IACvF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAA;IAC9D,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,MAAM,CAAC,YAAY,CACjB,MAAM,CAAC,UAAU,EACjB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CACpF,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAA,+BAA+B,CAAC,CAAA;AAE5F,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAA,uDAAuD,CAAC,CAAA;IAC3G,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FileSystem, Path } from "effect";
|
|
2
|
+
export declare const layer: import("effect/Layer").Layer<never, import("./Git.ts").GitRootError | import("effect/PlatformError").PlatformError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner | FileSystem.FileSystem | Path.Path>;
|
|
3
|
+
//# sourceMappingURL=TraitsConfigProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsConfigProvider.d.ts","sourceRoot":"","sources":["../../_util/TraitsConfigProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,UAAU,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAIxE,eAAO,MAAM,KAAK,2NAiBjB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Array, ConfigProvider, Effect, FileSystem, Path } from "effect";
|
|
2
|
+
import { getGitRoot, getWorktreeRoot } from "./Git.js";
|
|
3
|
+
export const layer = ConfigProvider.layerAdd(Effect.gen(function* () {
|
|
4
|
+
const fs = yield* FileSystem.FileSystem;
|
|
5
|
+
const path = yield* Path.Path;
|
|
6
|
+
const worktreeRoot = yield* getWorktreeRoot;
|
|
7
|
+
const gitRoot = yield* getGitRoot;
|
|
8
|
+
const files = Array.dedupe([path.join(worktreeRoot, ".env"), path.join(gitRoot, ".env")]);
|
|
9
|
+
let provider = ConfigProvider.fromUnknown({});
|
|
10
|
+
for (const file of files) {
|
|
11
|
+
if (yield* fs.exists(file)) {
|
|
12
|
+
provider = yield* ConfigProvider.fromDotEnv({ path: file }).pipe(Effect.map((value) => ConfigProvider.orElse(provider, value)));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return provider;
|
|
16
|
+
}).pipe(Effect.withSpan("TraitsConfigProvider.load")));
|
|
17
|
+
//# sourceMappingURL=TraitsConfigProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsConfigProvider.js","sourceRoot":"","sources":["../../_util/TraitsConfigProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEtD,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAA;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACzF,IAAI,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,QAAQ,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CACtD,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
export declare const layer: (endpoint: URL | undefined) => Layer.Layer<never, never, never> | Layer.Layer<import("effect/observability/OtlpExporter").Flusher, never, import("effect/http/HttpClient").HttpClient>;
|
|
3
|
+
//# sourceMappingURL=TraitsTelemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsTelemetry.d.ts","sourceRoot":"","sources":["../../_util/TraitsTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,MAAM,QAAQ,CAAA;AAM5C,eAAO,MAAM,KAAK,aAAc,GAAG,GAAG,SAAS,4JAa9C,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Layer, pipe, String } from "effect";
|
|
2
|
+
import { Url } from "effect/http";
|
|
3
|
+
import { OtlpLogger, OtlpSerialization, OtlpTracer } from "effect/observability";
|
|
4
|
+
import PackageJson from "../package.json" with { type: "json" };
|
|
5
|
+
export const layer = (endpoint) => {
|
|
6
|
+
if (endpoint === undefined)
|
|
7
|
+
return Layer.empty;
|
|
8
|
+
const url = (signal) => pipe(endpoint, Url.setPathname(`${pipe(endpoint.pathname, String.replace(/\/$/, ""))}/v1/${signal}`), Url.setHash("")).href;
|
|
9
|
+
const resource = { serviceName: "traits", serviceVersion: PackageJson.version };
|
|
10
|
+
return Layer.mergeAll(OtlpTracer.layer({ url: url("traces"), resource }), OtlpLogger.layer({ url: url("logs"), resource })).pipe(Layer.provide(OtlpSerialization.layerJson));
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=TraitsTelemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraitsTelemetry.js","sourceRoot":"","sources":["../../_util/TraitsTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEhF,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAE/D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAyB,EAAE,EAAE;IACjD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,KAAK,CAAA;IAC9C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,EAAE,CAC7B,IAAI,CACF,QAAQ,EACR,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,EACrF,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAChB,CAAC,IAAI,CAAA;IACR,MAAM,QAAQ,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,CAAA;IAC/E,OAAO,KAAK,CAAC,QAAQ,CACnB,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAClD,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CACjD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AACpD,CAAC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const words: readonly ["acacia", "adventure", "agate", "alabaster", "albatross", "alchemy", "alder", "allure", "alpine", "amaranth", "amber", "ambrosia", "amethyst", "amulet", "anemone", "angel", "anthem", "antler", "apricot", "aquamarine", "aquarium", "arbor", "arcadia", "archway", "aria", "arpeggio", "arrowroot", "aspen", "aster", "astral", "atlas", "aurora", "autumn", "avalon", "aviary", "azalea", "azure", "badger", "ballad", "ballet", "bamboo", "banyan", "basil", "bayberry", "beacon", "bead", "beech", "bell", "bellflower", "berry", "birch", "birdsong", "bliss", "bloom", "blossom", "bluebell", "bluebird", "blueberry", "boreal", "bower", "bramble", "brass", "breeze", "brook", "bubble", "buttercup", "butterfly", "cabin", "cadence", "cairn", "calico", "camellia", "canary", "candle", "canopy", "canvas", "canyon", "caravan", "cardinal", "carnation", "carousel", "cascade", "castle", "cedar", "celadon", "celestial", "cello", "chalet", "chalice", "chamomile", "charm", "cherry", "chickadee", "chime", "chinchilla", "cinnamon", "citadel", "citrine", "citrus", "clarinet", "clematis", "cloud", "clover", "cobalt", "cocoa", "comet", "compass", "concerto", "constellation", "copper", "coral", "cosmic", "cosmos", "cottage", "cove", "crane", "crescent", "cricket", "crocus", "crown", "crystal", "cupcake", "cypress", "daffodil", "dahlia", "daisy", "dandelion", "dapple", "dawn", "daybreak", "daydream", "deer", "delight", "dew", "dewdrop", "diamond", "dolphin", "dove", "dragon", "dragonfly", "dream", "dreamer", "dreamscape", "drift", "driftwood", "droplet", "dune", "dusk", "eagle", "echo", "edelweiss", "elderberry", "elm", "elysian", "ember", "emerald", "enchantment", "enclave", "enigma", "epiphany", "equinox", "ethereal", "evergreen", "fable", "fairy", "falcon", "fantasia", "faraway", "fawn", "feather", "fern", "festival", "fig", "filigree", "finch", "firefly", "fir", "fjord", "flamingo", "fleur", "flora", "flourish", "flower", "flute", "foal", "forest", "fountain", "fox", "freesia", "frog", "frost", "galaxy", "garden", "gardenia", "garland", "garnet", "gazebo", "gazelle", "gem", "ginger", "ginkgo", "glacier", "glade", "gleam", "glimmer", "glitter", "glow", "gold", "golden", "goldfinch", "gossamer", "grace", "granite", "grape", "greenhouse", "griffin", "grotto", "grove", "halo", "harbor", "hare", "harmony", "harp", "harvest", "haven", "hawthorn", "heather", "hedgehog", "heliotrope", "heron", "hibiscus", "hickory", "highland", "hilltop", "holly", "honey", "honeybee", "honeysuckle", "hope", "horizon", "hummingbird", "hyacinth", "hydrangea", "ibis", "icicle", "idyll", "illumine", "imagine", "indigo", "iris", "island", "ivory", "ivy", "jade", "jasmine", "jazz", "jewel", "journey", "joy", "jubilee", "juniper", "kaleidoscope", "karate", "kestrel", "kingfisher", "kite", "kiwi", "koala", "koi", "lagoon", "lake", "lantern", "lapis", "larch", "lark", "laurel", "lavender", "leaf", "legend", "lemon", "lemur", "lighthouse", "lilac", "lily", "linden", "lotus", "lullaby", "lumen", "luminous", "lunar", "lupine", "lyra", "lyric", "macaw", "magic", "magnolia", "mandarin", "mandolin", "mango", "maple", "marble", "marigold", "marimba", "mariposa", "marvel", "meadow", "melody", "meridian", "mermaid", "meteor", "midnight", "milkweed", "mimosa", "mint", "mirage", "mist", "moon", "moonbeam", "moonflower", "moonlight", "moonrise", "moonstone", "morning", "mosaic", "moss", "mountain", "mulberry", "muse", "music", "myriad", "myrtle", "mystic", "myth", "narwhal", "nebula", "nectar", "nightingale", "nimbus", "nocturne", "nova", "oak", "oasis", "ocean", "octave", "odyssey", "olive", "opal", "opera", "orchard", "orchestra", "orchid", "origami", "oriole", "otter", "owl", "pagoda", "palace", "palm", "panda", "papaya", "papyrus", "paradise", "parakeet", "parchment", "pastel", "pathway", "pavilion", "peach", "peacock", "pear", "pearl", "pebble", "pegasus", "pelican", "penguin", "peony", "peridot", "periwinkle", "petal", "phoenix", "piano", "piccolo", "pilgrim", "pine", "pinnacle", "pixie", "planet", "plum", "plume", "poem", "poetry", "polaris", "pomegranate", "pond", "poplar", "poppy", "porcelain", "portal", "prairie", "primrose", "prism", "promise", "puffin", "quail", "quartz", "quest", "quill", "quince", "rabbit", "radiance", "rainbow", "raindrop", "rainfall", "raven", "realm", "redwood", "reed", "reef", "reflection", "reverie", "rhapsody", "ribbon", "ripple", "river", "robin", "rose", "rosemary", "rosewood", "rowan", "ruby", "rune", "saffron", "sage", "sail", "sandalwood", "sapphire", "satin", "savanna", "seabird", "seaglass", "seahorse", "seal", "seashell", "sequoia", "serenade", "serendipity", "serenity", "shamrock", "shell", "shimmer", "silhouette", "silk", "silver", "skylark", "snow", "snowdrop", "snowfall", "snowflake", "solace", "solar", "solstice", "sonata", "songbird", "sorrel", "spark", "sparkle", "sparrow", "spell", "spire", "spring", "sprite", "spruce", "star", "stardust", "starfish", "starlight", "starling", "stone", "storybook", "strawberry", "stream", "summer", "sun", "sunbeam", "sunflower", "sunlight", "sunrise", "sunset", "swallow", "swan", "sweetpea", "sycamore", "symphony", "talisman", "tamarind", "tangerine", "tapestry", "teal", "telescope", "terrace", "thistle", "thrush", "thyme", "tide", "tiger", "topaz", "toucan", "tower", "treasure", "treetop", "trill", "tulip", "turquoise", "turtle", "twilight", "twinkle", "unicorn", "valley", "vanilla", "velvet", "verbena", "verdant", "vesper", "violet", "violin", "vista", "voyage", "waltz", "wand", "wander", "waterfall", "wave", "whale", "whimsy", "whisper", "wildflower", "willow", "windchime", "windmill", "wing", "winter", "wish", "wisteria", "wizard", "wolf", "wonder", "woodland", "wren", "yarrow", "yonder", "zenith", "zephyr", "zinnia"];
|
|
2
|
+
//# sourceMappingURL=words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../_util/words.ts"],"names":[],"mappings":"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"}
|