@cogenta/agents 0.2.0 → 0.4.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/dist/agents/builtins.d.ts +51 -0
- package/dist/agents/builtins.d.ts.map +1 -0
- package/dist/agents/builtins.js +190 -0
- package/dist/agents/builtins.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +95 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +285 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/store.d.ts +71 -0
- package/dist/agents/store.d.ts.map +1 -0
- package/dist/agents/store.js +211 -0
- package/dist/agents/store.js.map +1 -0
- package/dist/agents/types.d.ts +10 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/assist/agent-identity.d.ts +44 -0
- package/dist/assist/agent-identity.d.ts.map +1 -0
- package/dist/assist/agent-identity.js +136 -0
- package/dist/assist/agent-identity.js.map +1 -0
- package/dist/assist/chat.d.ts +2 -0
- package/dist/assist/chat.d.ts.map +1 -1
- package/dist/assist/chat.js +14 -5
- package/dist/assist/chat.js.map +1 -1
- package/dist/assist/classify.d.ts +3 -2
- package/dist/assist/classify.d.ts.map +1 -1
- package/dist/assist/classify.js +30 -11
- package/dist/assist/classify.js.map +1 -1
- package/dist/assist/faq.d.ts +3 -2
- package/dist/assist/faq.d.ts.map +1 -1
- package/dist/assist/faq.js +31 -13
- package/dist/assist/faq.js.map +1 -1
- package/dist/assist/runtime.d.ts +8 -2
- package/dist/assist/runtime.d.ts.map +1 -1
- package/dist/assist/runtime.js +2 -2
- package/dist/assist/runtime.js.map +1 -1
- package/dist/assist/toolset.d.ts +10 -0
- package/dist/assist/toolset.d.ts.map +1 -1
- package/dist/assist/toolset.js +36 -8
- package/dist/assist/toolset.js.map +1 -1
- package/dist/assist/usage.d.ts +58 -0
- package/dist/assist/usage.d.ts.map +1 -0
- package/dist/assist/usage.js +53 -0
- package/dist/assist/usage.js.map +1 -0
- package/dist/assist/writing.d.ts +10 -9
- package/dist/assist/writing.d.ts.map +1 -1
- package/dist/assist/writing.js +126 -58
- package/dist/assist/writing.js.map +1 -1
- package/dist/audit/with-audit.d.ts +13 -0
- package/dist/audit/with-audit.d.ts.map +1 -1
- package/dist/audit/with-audit.js +6 -0
- package/dist/audit/with-audit.js.map +1 -1
- package/dist/autonomy/levels.d.ts +37 -0
- package/dist/autonomy/levels.d.ts.map +1 -0
- package/dist/autonomy/levels.js +51 -0
- package/dist/autonomy/levels.js.map +1 -0
- package/dist/conversations/store.d.ts +62 -0
- package/dist/conversations/store.d.ts.map +1 -0
- package/dist/conversations/store.js +0 -0
- package/dist/conversations/store.js.map +1 -0
- package/dist/identity/context.d.ts +8 -0
- package/dist/identity/context.d.ts.map +1 -1
- package/dist/identity/context.js +19 -4
- package/dist/identity/context.js.map +1 -1
- package/dist/identity/markdown.d.ts +38 -0
- package/dist/identity/markdown.d.ts.map +1 -0
- package/dist/identity/markdown.js +85 -0
- package/dist/identity/markdown.js.map +1 -0
- package/dist/index.d.ts +56 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/render.d.ts +23 -0
- package/dist/prompts/render.d.ts.map +1 -0
- package/dist/prompts/render.js +35 -0
- package/dist/prompts/render.js.map +1 -0
- package/dist/prompts/seeds.d.ts +34 -0
- package/dist/prompts/seeds.d.ts.map +1 -0
- package/dist/prompts/seeds.js +166 -0
- package/dist/prompts/seeds.js.map +1 -0
- package/dist/prompts/store.d.ts +8 -0
- package/dist/prompts/store.d.ts.map +1 -0
- package/dist/prompts/store.js +153 -0
- package/dist/prompts/store.js.map +1 -0
- package/dist/prompts/types.d.ts +51 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +24 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +21 -3
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +60 -12
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/catalog.d.ts +41 -0
- package/dist/providers/catalog.d.ts.map +1 -0
- package/dist/providers/catalog.js +85 -0
- package/dist/providers/catalog.js.map +1 -0
- package/dist/providers/content-parts.d.ts +12 -0
- package/dist/providers/content-parts.d.ts.map +1 -0
- package/dist/providers/content-parts.js +18 -0
- package/dist/providers/content-parts.js.map +1 -0
- package/dist/providers/defaults.d.ts +15 -0
- package/dist/providers/defaults.d.ts.map +1 -0
- package/dist/providers/defaults.js +15 -0
- package/dist/providers/defaults.js.map +1 -0
- package/dist/providers/google.d.ts +16 -3
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +54 -12
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai.d.ts +32 -4
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +114 -21
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/registry.d.ts +31 -20
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +49 -7
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/request-signal.d.ts +23 -0
- package/dist/providers/request-signal.d.ts.map +1 -0
- package/dist/providers/request-signal.js +26 -0
- package/dist/providers/request-signal.js.map +1 -0
- package/dist/providers/resolve.d.ts +13 -0
- package/dist/providers/resolve.d.ts.map +1 -0
- package/dist/providers/resolve.js +30 -0
- package/dist/providers/resolve.js.map +1 -0
- package/dist/providers/store.d.ts +70 -0
- package/dist/providers/store.d.ts.map +1 -0
- package/dist/providers/store.js +308 -0
- package/dist/providers/store.js.map +1 -0
- package/dist/providers/tool-names.d.ts +9 -0
- package/dist/providers/tool-names.d.ts.map +1 -0
- package/dist/providers/tool-names.js +56 -0
- package/dist/providers/tool-names.js.map +1 -0
- package/dist/providers/types.d.ts +78 -3
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/rag/reference-documents/ingest.d.ts +22 -0
- package/dist/rag/reference-documents/ingest.d.ts.map +1 -0
- package/dist/rag/reference-documents/ingest.js +69 -0
- package/dist/rag/reference-documents/ingest.js.map +1 -0
- package/dist/rag/reference-documents/store.d.ts +23 -0
- package/dist/rag/reference-documents/store.d.ts.map +1 -0
- package/dist/rag/reference-documents/store.js +140 -0
- package/dist/rag/reference-documents/store.js.map +1 -0
- package/dist/rag/reference-documents/types.d.ts +52 -0
- package/dist/rag/reference-documents/types.d.ts.map +1 -0
- package/dist/rag/reference-documents/types.js +32 -0
- package/dist/rag/reference-documents/types.js.map +1 -0
- package/dist/runtime/loop.d.ts +29 -7
- package/dist/runtime/loop.d.ts.map +1 -1
- package/dist/runtime/loop.js +200 -42
- package/dist/runtime/loop.js.map +1 -1
- package/dist/runtime/types.d.ts +4 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/site-plan/analyse-brief.d.ts +8 -0
- package/dist/site-plan/analyse-brief.d.ts.map +1 -1
- package/dist/site-plan/analyse-brief.js +18 -7
- package/dist/site-plan/analyse-brief.js.map +1 -1
- package/dist/site-plan/approval.d.ts +2 -2
- package/dist/site-plan/approval.d.ts.map +1 -1
- package/dist/site-plan/approval.js +34 -4
- package/dist/site-plan/approval.js.map +1 -1
- package/dist/site-plan/content-model.d.ts +14 -0
- package/dist/site-plan/content-model.d.ts.map +1 -1
- package/dist/site-plan/content-model.js +52 -8
- package/dist/site-plan/content-model.js.map +1 -1
- package/dist/site-plan/demo-content.js +2 -3
- package/dist/site-plan/demo-content.js.map +1 -1
- package/dist/site-plan/propose-plan.d.ts +10 -0
- package/dist/site-plan/propose-plan.d.ts.map +1 -1
- package/dist/site-plan/propose-plan.js +25 -1
- package/dist/site-plan/propose-plan.js.map +1 -1
- package/dist/site-plan/site-context.d.ts +81 -0
- package/dist/site-plan/site-context.d.ts.map +1 -0
- package/dist/site-plan/site-context.js +76 -0
- package/dist/site-plan/site-context.js.map +1 -0
- package/dist/site-plan/skin-candidates.d.ts +7 -0
- package/dist/site-plan/skin-candidates.d.ts.map +1 -1
- package/dist/site-plan/skin-candidates.js +6 -0
- package/dist/site-plan/skin-candidates.js.map +1 -1
- package/dist/site-plan/structural-gaps.d.ts +32 -0
- package/dist/site-plan/structural-gaps.d.ts.map +1 -0
- package/dist/site-plan/structural-gaps.js +77 -0
- package/dist/site-plan/structural-gaps.js.map +1 -0
- package/dist/site-plan/types.d.ts +7 -0
- package/dist/site-plan/types.d.ts.map +1 -1
- package/dist/skills/frontmatter.d.ts +19 -1
- package/dist/skills/frontmatter.d.ts.map +1 -1
- package/dist/skills/frontmatter.js +29 -5
- package/dist/skills/frontmatter.js.map +1 -1
- package/dist/skills/library.d.ts +133 -0
- package/dist/skills/library.d.ts.map +1 -0
- package/dist/skills/library.js +332 -0
- package/dist/skills/library.js.map +1 -0
- package/dist/skills/types.d.ts +8 -1
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skin/generate.d.ts +10 -0
- package/dist/skin/generate.d.ts.map +1 -1
- package/dist/skin/generate.js +43 -4
- package/dist/skin/generate.js.map +1 -1
- package/dist/theme-creator/propose-theme.d.ts +77 -0
- package/dist/theme-creator/propose-theme.d.ts.map +1 -0
- package/dist/theme-creator/propose-theme.js +228 -0
- package/dist/theme-creator/propose-theme.js.map +1 -0
- package/dist/tools/core/agent-delegate.d.ts +8 -5
- package/dist/tools/core/agent-delegate.d.ts.map +1 -1
- package/dist/tools/core/agent-delegate.js +16 -6
- package/dist/tools/core/agent-delegate.js.map +1 -1
- package/dist/tools/core/content-browse.d.ts +74 -0
- package/dist/tools/core/content-browse.d.ts.map +1 -0
- package/dist/tools/core/content-browse.js +63 -0
- package/dist/tools/core/content-browse.js.map +1 -0
- package/dist/tools/core/content-schema.d.ts +86 -0
- package/dist/tools/core/content-schema.d.ts.map +1 -0
- package/dist/tools/core/content-schema.js +83 -0
- package/dist/tools/core/content-schema.js.map +1 -0
- package/dist/tools/core/deps-scan.d.ts +25 -0
- package/dist/tools/core/deps-scan.d.ts.map +1 -0
- package/dist/tools/core/deps-scan.js +85 -0
- package/dist/tools/core/deps-scan.js.map +1 -0
- package/dist/tools/core/media.d.ts +18 -2
- package/dist/tools/core/media.d.ts.map +1 -1
- package/dist/tools/core/media.js +8 -2
- package/dist/tools/core/media.js.map +1 -1
- package/dist/tools/core/not-found-log.d.ts +44 -0
- package/dist/tools/core/not-found-log.d.ts.map +1 -0
- package/dist/tools/core/not-found-log.js +32 -0
- package/dist/tools/core/not-found-log.js.map +1 -0
- package/dist/tools/core/redirects.d.ts +51 -0
- package/dist/tools/core/redirects.d.ts.map +1 -0
- package/dist/tools/core/redirects.js +50 -0
- package/dist/tools/core/redirects.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { VOCABULARY } from '@cogenta/blocks';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { defineTool } from '../define.js';
|
|
4
|
+
const BlockFieldOutputSchema = z.object({
|
|
5
|
+
key: z.string(),
|
|
6
|
+
kind: z.string(),
|
|
7
|
+
required: z.boolean(),
|
|
8
|
+
options: z.record(z.string(), z.unknown()),
|
|
9
|
+
});
|
|
10
|
+
const BlockOutputSchema = z.object({
|
|
11
|
+
name: z.string(),
|
|
12
|
+
version: z.string(),
|
|
13
|
+
fields: z.array(BlockFieldOutputSchema),
|
|
14
|
+
});
|
|
15
|
+
const CollectionFieldOutputSchema = z.object({
|
|
16
|
+
key: z.string(),
|
|
17
|
+
kind: z.string(),
|
|
18
|
+
label: z.string().nullable(),
|
|
19
|
+
required: z.boolean(),
|
|
20
|
+
options: z.record(z.string(), z.unknown()),
|
|
21
|
+
});
|
|
22
|
+
const CollectionSchemaOutputSchema = z.object({
|
|
23
|
+
collection: z.string(),
|
|
24
|
+
labelSingular: z.string(),
|
|
25
|
+
labelPlural: z.string(),
|
|
26
|
+
routed: z.boolean(),
|
|
27
|
+
fields: z.array(CollectionFieldOutputSchema),
|
|
28
|
+
});
|
|
29
|
+
const OutputSchema = z.object({
|
|
30
|
+
collections: z.array(CollectionSchemaOutputSchema),
|
|
31
|
+
blocks: z.array(BlockOutputSchema),
|
|
32
|
+
});
|
|
33
|
+
const InputSchema = z.object({ collection: z.string().optional() });
|
|
34
|
+
/**
|
|
35
|
+
* Built once, from `@cogenta/blocks`' own `VOCABULARY` — a plain data
|
|
36
|
+
* mapping, not a query, so it costs nothing to compute on every call and
|
|
37
|
+
* needs no caching.
|
|
38
|
+
*/
|
|
39
|
+
function blockVocabularyOutput() {
|
|
40
|
+
return VOCABULARY.map((block) => ({
|
|
41
|
+
name: block.name,
|
|
42
|
+
version: block.version,
|
|
43
|
+
fields: Object.entries(block.schema).map(([key, field]) => ({
|
|
44
|
+
key,
|
|
45
|
+
kind: field.kind,
|
|
46
|
+
required: field.required,
|
|
47
|
+
options: field.options,
|
|
48
|
+
})),
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
export function createContentSchemaTool(service) {
|
|
52
|
+
return defineTool({
|
|
53
|
+
name: 'content.schema',
|
|
54
|
+
version: '1.0.0',
|
|
55
|
+
description: "Describe one or every collection's field shape (key, kind, required, label, kind-specific options) and this site's fixed block vocabulary (block type name, version, and its own field shape) — the type/field names a blocks-kind field's array items may use. Call this before content.write_draft to know which field keys and value shapes a collection actually accepts, instead of guessing.",
|
|
56
|
+
input: InputSchema,
|
|
57
|
+
output: OutputSchema,
|
|
58
|
+
permissions: ['content.read'],
|
|
59
|
+
sideEffects: false,
|
|
60
|
+
reversible: false,
|
|
61
|
+
cost: 'low',
|
|
62
|
+
async execute(input, ctx) {
|
|
63
|
+
const collections = await service.describe({ actor: ctx.actor }, input.collection);
|
|
64
|
+
return {
|
|
65
|
+
collections: collections.map((collection) => ({
|
|
66
|
+
collection: collection.collection,
|
|
67
|
+
labelSingular: collection.labelSingular,
|
|
68
|
+
labelPlural: collection.labelPlural,
|
|
69
|
+
routed: collection.routed,
|
|
70
|
+
fields: collection.fields.map((field) => ({
|
|
71
|
+
key: field.key,
|
|
72
|
+
kind: field.kind,
|
|
73
|
+
label: field.label,
|
|
74
|
+
required: field.required,
|
|
75
|
+
options: field.options,
|
|
76
|
+
})),
|
|
77
|
+
})),
|
|
78
|
+
blocks: blockVocabularyOutput(),
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=content-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-schema.js","sourceRoot":"","sources":["../../../src/tools/core/content-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
export interface DepsScanToolOptions {
|
|
4
|
+
/** Where this site's own `package.json` lives — `create-cogenta` always writes one at the project root. */
|
|
5
|
+
readonly projectRoot: string;
|
|
6
|
+
readonly readFileImpl?: (path: string) => Promise<string>;
|
|
7
|
+
}
|
|
8
|
+
declare const DepsScanInputSchema: z.ZodObject<{}, z.core.$strip>;
|
|
9
|
+
type DepsScanInput = z.infer<typeof DepsScanInputSchema>;
|
|
10
|
+
declare const DepsScanOutputSchema: z.ZodObject<{
|
|
11
|
+
scannedFile: z.ZodString;
|
|
12
|
+
totalDependencies: z.ZodNumber;
|
|
13
|
+
unpinned: z.ZodArray<z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
range: z.ZodString;
|
|
16
|
+
kind: z.ZodEnum<{
|
|
17
|
+
dependencies: "dependencies";
|
|
18
|
+
devDependencies: "devDependencies";
|
|
19
|
+
}>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type DepsScanOutput = z.infer<typeof DepsScanOutputSchema>;
|
|
23
|
+
export declare function createDepsScanTool(options: DepsScanToolOptions): ToolDefinition<DepsScanInput, DepsScanOutput>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=deps-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps-scan.d.ts","sourceRoot":"","sources":["../../../src/tools/core/deps-scan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAsCjD,MAAM,WAAW,mBAAmB;IAClC,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1D;AAED,QAAA,MAAM,mBAAmB,gCAAe,CAAA;AACxC,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAQxD,QAAA,MAAM,oBAAoB;;;;;;;;;;;iBAIxB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAOjE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAiC/C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { defineTool } from '../define.js';
|
|
5
|
+
/**
|
|
6
|
+
* `deps.scan` — the built-in Security Scanner agent's (`agents/builtins.ts`)
|
|
7
|
+
* one real capability, "réutilise... les vérifications déjà documentées dans
|
|
8
|
+
* AGENTS.md" (L22 task 1 item 5): AGENTS.md's own R9 discipline names an
|
|
9
|
+
* unpinned/wildcard version as exactly the kind of dependency risk this
|
|
10
|
+
* project already cares about, so this tool reads the site's own
|
|
11
|
+
* `package.json` (read-only, no shell exec, no network — zero new
|
|
12
|
+
* dependency, R9/R10) and flags any dependency whose version specifier is
|
|
13
|
+
* not pinned in the loose sense semver tooling already treats as "someone
|
|
14
|
+
* decided this range on purpose": `^`, `~`, an exact version, or
|
|
15
|
+
* `workspace:*` inside this monorepo itself. `*`, `latest`, `x`, and a bare
|
|
16
|
+
* tag (`next`) are flagged — a site that ships one of these has no way to
|
|
17
|
+
* know what it will actually install on the next `npm install`.
|
|
18
|
+
*
|
|
19
|
+
* Deliberately narrow: this reads declared ranges, not installed versions or
|
|
20
|
+
* known CVEs (a real vulnerability database is a service dependency this
|
|
21
|
+
* tool does not take — R1). "Audit du journal d'audit pour des motifs
|
|
22
|
+
* suspects" (the other half the lot names for this agent) is not built here;
|
|
23
|
+
* see this task's closing report for why it is left as a documented
|
|
24
|
+
* follow-up rather than a second, rushed tool.
|
|
25
|
+
*/
|
|
26
|
+
const UNPINNED_PATTERN = /^(\*|x|latest|next)$/iu;
|
|
27
|
+
function isUnpinned(range) {
|
|
28
|
+
const trimmed = range.trim();
|
|
29
|
+
if (trimmed.length === 0)
|
|
30
|
+
return true;
|
|
31
|
+
if (trimmed.startsWith('workspace:'))
|
|
32
|
+
return false;
|
|
33
|
+
if (UNPINNED_PATTERN.test(trimmed))
|
|
34
|
+
return true;
|
|
35
|
+
// A real semver range operator, or an exact version, or a URL/file spec —
|
|
36
|
+
// none of those are "we don't know what we'll get".
|
|
37
|
+
if (/^[\^~]?\d/u.test(trimmed))
|
|
38
|
+
return false;
|
|
39
|
+
if (/^(git|file|https?):/u.test(trimmed))
|
|
40
|
+
return false;
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const DepsScanInputSchema = z.object({});
|
|
44
|
+
const DependencyFindingSchema = z.object({
|
|
45
|
+
name: z.string(),
|
|
46
|
+
range: z.string(),
|
|
47
|
+
kind: z.enum(['dependencies', 'devDependencies']),
|
|
48
|
+
});
|
|
49
|
+
const DepsScanOutputSchema = z.object({
|
|
50
|
+
scannedFile: z.string(),
|
|
51
|
+
totalDependencies: z.number(),
|
|
52
|
+
unpinned: z.array(DependencyFindingSchema),
|
|
53
|
+
});
|
|
54
|
+
export function createDepsScanTool(options) {
|
|
55
|
+
const read = options.readFileImpl ?? ((path) => readFile(path, 'utf8'));
|
|
56
|
+
const packageJsonPath = join(options.projectRoot, 'package.json');
|
|
57
|
+
return defineTool({
|
|
58
|
+
name: 'deps.scan',
|
|
59
|
+
version: '1.0.0',
|
|
60
|
+
description: "Scan this site's own package.json for dependencies with an unpinned or wildcard version.",
|
|
61
|
+
input: DepsScanInputSchema,
|
|
62
|
+
output: DepsScanOutputSchema,
|
|
63
|
+
permissions: ['deps.scan'],
|
|
64
|
+
sideEffects: false,
|
|
65
|
+
reversible: false,
|
|
66
|
+
cost: 'low',
|
|
67
|
+
async execute() {
|
|
68
|
+
const raw = await read(packageJsonPath);
|
|
69
|
+
const parsed = JSON.parse(raw);
|
|
70
|
+
const groups = ['dependencies', 'devDependencies'];
|
|
71
|
+
let total = 0;
|
|
72
|
+
const unpinned = [];
|
|
73
|
+
for (const kind of groups) {
|
|
74
|
+
const deps = parsed[kind] ?? {};
|
|
75
|
+
for (const [name, range] of Object.entries(deps)) {
|
|
76
|
+
total += 1;
|
|
77
|
+
if (isUnpinned(range))
|
|
78
|
+
unpinned.push({ name, range, kind });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { scannedFile: packageJsonPath, totalDependencies: total, unpinned };
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=deps-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps-scan.js","sourceRoot":"","sources":["../../../src/tools/core/deps-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { MediaAsset, MediaStore } from '@cogenta/core';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import type { ToolDefinition } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* `media.read`/`media.write`'s output shape — deliberately **not** the same
|
|
6
|
+
* type as `@cogenta/core`'s `MediaAsset` any more.
|
|
7
|
+
*
|
|
8
|
+
* Fiche 46 added `folderId` to `MediaAsset` (the media library's folder
|
|
9
|
+
* tree). Contract C (`docs/04-contrats.md`, ADR-0020) treats an existing
|
|
10
|
+
* tool's signature as figured: growing it — even by an additive field —
|
|
11
|
+
* needs a governance decision this session cannot make unilaterally (unlike
|
|
12
|
+
* contract A or D, contract C's own text carries no "additive is minor"
|
|
13
|
+
* exception for an already-shipped tool). Rather than touch it, `folderId`
|
|
14
|
+
* is stripped before this shape is built at all, so `media.read`/`.write`'s
|
|
15
|
+
* wire output is byte-for-byte what it was before this fiche — an agent
|
|
16
|
+
* asking to move a file between folders needs a new, separate tool, not
|
|
17
|
+
* this one grown quietly.
|
|
18
|
+
*/
|
|
19
|
+
type MediaToolAsset = Omit<MediaAsset, 'folderId'>;
|
|
4
20
|
declare const ReadInputSchema: z.ZodObject<{
|
|
5
21
|
id: z.ZodString;
|
|
6
22
|
}, z.core.$strip>;
|
|
@@ -12,7 +28,7 @@ type ReadInput = z.infer<typeof ReadInputSchema>;
|
|
|
12
28
|
* actual gate, enforced by the manifest before the call ever reaches the
|
|
13
29
|
* store.
|
|
14
30
|
*/
|
|
15
|
-
export declare function createMediaReadTool(store: MediaStore): ToolDefinition<ReadInput,
|
|
31
|
+
export declare function createMediaReadTool(store: MediaStore): ToolDefinition<ReadInput, MediaToolAsset>;
|
|
16
32
|
declare const WriteInputSchema: z.ZodObject<{
|
|
17
33
|
id: z.ZodString;
|
|
18
34
|
alt: z.ZodOptional<z.ZodString>;
|
|
@@ -33,6 +49,6 @@ type WriteInput = z.infer<typeof WriteInputSchema>;
|
|
|
33
49
|
* editing an existing asset's accessibility metadata, which is the concrete
|
|
34
50
|
* use case this tool exists for (e.g. an accessibility-review agent).
|
|
35
51
|
*/
|
|
36
|
-
export declare function createMediaWriteTool(store: MediaStore): ToolDefinition<WriteInput,
|
|
52
|
+
export declare function createMediaWriteTool(store: MediaStore): ToolDefinition<WriteInput, MediaToolAsset>;
|
|
37
53
|
export {};
|
|
38
54
|
//# sourceMappingURL=media.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/core/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/tools/core/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD;;;;;;;;;;;;;;GAcG;AACH,KAAK,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AA0BlD,QAAA,MAAM,eAAe;;iBAA+B,CAAA;AACpD,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAuBhG;AAED,QAAA,MAAM,gBAAgB;;;;;;;;;iBAMpB,CAAA;AACF,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAElD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,GAChB,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAuB5C"}
|
package/dist/tools/core/media.js
CHANGED
|
@@ -2,6 +2,10 @@ import { CogentaError } from '@cogenta/core';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { defineTool } from '../define.js';
|
|
4
4
|
const FocalPointSchema = z.object({ x: z.number(), y: z.number() });
|
|
5
|
+
function toToolAsset(asset) {
|
|
6
|
+
const { folderId: _folderId, ...rest } = asset;
|
|
7
|
+
return rest;
|
|
8
|
+
}
|
|
5
9
|
const MediaAssetSchema = z.object({
|
|
6
10
|
id: z.string(),
|
|
7
11
|
kind: z.enum(['image', 'video', 'audio', 'file']),
|
|
@@ -15,6 +19,8 @@ const MediaAssetSchema = z.object({
|
|
|
15
19
|
decorativeJustification: z.string().nullable(),
|
|
16
20
|
focal: FocalPointSchema.nullable(),
|
|
17
21
|
storageKey: z.string(),
|
|
22
|
+
tags: z.array(z.string()),
|
|
23
|
+
contentHash: z.string(),
|
|
18
24
|
createdAt: z.string(),
|
|
19
25
|
createdBy: z.string().nullable(),
|
|
20
26
|
});
|
|
@@ -46,7 +52,7 @@ export function createMediaReadTool(store) {
|
|
|
46
52
|
hint: 'Check the id, or list media to find the right one.',
|
|
47
53
|
});
|
|
48
54
|
}
|
|
49
|
-
return asset;
|
|
55
|
+
return toToolAsset(asset);
|
|
50
56
|
},
|
|
51
57
|
});
|
|
52
58
|
}
|
|
@@ -86,7 +92,7 @@ export function createMediaWriteTool(store) {
|
|
|
86
92
|
: { decorativeJustification: input.decorativeJustification }),
|
|
87
93
|
...(input.focal === undefined ? {} : { focal: input.focal }),
|
|
88
94
|
};
|
|
89
|
-
return store.update(input.id, update);
|
|
95
|
+
return toToolAsset(await store.update(input.id, update));
|
|
90
96
|
},
|
|
91
97
|
});
|
|
92
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/tools/core/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/tools/core/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* `logs.read_not_found` — L22 task 3, "le superagent avec accès aux
|
|
5
|
+
* journaux (jamais au code source)". This is the one log this lot wires an
|
|
6
|
+
* agent to: the 404 log `@cogenta/schema`'s `NotFoundLogStore` has kept
|
|
7
|
+
* since fiche 12, never previously reachable from a tool. It carries a path,
|
|
8
|
+
* a hit count and timestamps — no request body, no header, no IP, no user
|
|
9
|
+
* agent (the store's own doc comment says why: `AGENTS.md` § Logs forbids
|
|
10
|
+
* either) — so there is nothing here for R8 to worry about beyond what
|
|
11
|
+
* `assembleContext`'s `data` channel already does for any external text.
|
|
12
|
+
*
|
|
13
|
+
* A narrow structural type, not the full `NotFoundLogStore`, for the same
|
|
14
|
+
* reason `content.ts`'s `ContentServiceLike` is narrow: this tool only ever
|
|
15
|
+
* reads.
|
|
16
|
+
*/
|
|
17
|
+
export interface NotFoundLogReader {
|
|
18
|
+
list(options?: {
|
|
19
|
+
readonly limit?: number;
|
|
20
|
+
}): Promise<readonly {
|
|
21
|
+
readonly path: string;
|
|
22
|
+
readonly hits: number;
|
|
23
|
+
readonly firstSeen: number;
|
|
24
|
+
readonly lastSeen: number;
|
|
25
|
+
readonly lastReferrer: string | null;
|
|
26
|
+
}[]>;
|
|
27
|
+
}
|
|
28
|
+
declare const InputSchema: z.ZodObject<{
|
|
29
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
type Input = z.infer<typeof InputSchema>;
|
|
32
|
+
declare const OutputSchema: z.ZodObject<{
|
|
33
|
+
entries: z.ZodArray<z.ZodObject<{
|
|
34
|
+
path: z.ZodString;
|
|
35
|
+
hits: z.ZodNumber;
|
|
36
|
+
firstSeen: z.ZodNumber;
|
|
37
|
+
lastSeen: z.ZodNumber;
|
|
38
|
+
lastReferrer: z.ZodNullable<z.ZodString>;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
type Output = z.infer<typeof OutputSchema>;
|
|
42
|
+
export declare function createNotFoundLogReadTool(store: NotFoundLogReader): ToolDefinition<Input, Output>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=not-found-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found-log.d.ts","sourceRoot":"","sources":["../../../src/tools/core/not-found-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAClD,SAAS;QACP,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KACrC,EAAE,CACJ,CAAA;CACF;AAED,QAAA,MAAM,WAAW;;iBAGf,CAAA;AACF,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAUxC,QAAA,MAAM,YAAY;;;;;;;;iBAA8C,CAAA;AAChE,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAiBjG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineTool } from '../define.js';
|
|
3
|
+
const InputSchema = z.object({
|
|
4
|
+
/** Highest hit count first, same default and cap as the admin's own `/api/not-found`. */
|
|
5
|
+
limit: z.number().int().positive().max(200).optional(),
|
|
6
|
+
});
|
|
7
|
+
const EntrySchema = z.object({
|
|
8
|
+
path: z.string(),
|
|
9
|
+
hits: z.number(),
|
|
10
|
+
firstSeen: z.number(),
|
|
11
|
+
lastSeen: z.number(),
|
|
12
|
+
lastReferrer: z.string().nullable(),
|
|
13
|
+
});
|
|
14
|
+
const OutputSchema = z.object({ entries: z.array(EntrySchema) });
|
|
15
|
+
export function createNotFoundLogReadTool(store) {
|
|
16
|
+
return defineTool({
|
|
17
|
+
name: 'logs.read_not_found',
|
|
18
|
+
version: '1.0.0',
|
|
19
|
+
description: "Read this site's log of public URLs that answered a 404, sorted by hit count — the paths worth investigating first.",
|
|
20
|
+
input: InputSchema,
|
|
21
|
+
output: OutputSchema,
|
|
22
|
+
permissions: ['logs.read'],
|
|
23
|
+
sideEffects: false,
|
|
24
|
+
reversible: false,
|
|
25
|
+
cost: 'low',
|
|
26
|
+
async execute(input) {
|
|
27
|
+
const entries = await store.list(input.limit === undefined ? {} : { limit: input.limit });
|
|
28
|
+
return { entries: [...entries] };
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=not-found-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found-log.js","sourceRoot":"","sources":["../../../src/tools/core/not-found-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AA6BzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,yFAAyF;IACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAA;AAGF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AAGhE,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,qHAAqH;QACvH,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,KAAK;QACX,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YACzF,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAA;QAClC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* `redirects.create` — L22 task 3's one corrective action: a monitoring
|
|
5
|
+
* agent that has read `logs.read_not_found` and picked a destination (via
|
|
6
|
+
* `content.list`) hands both here. It is deliberately the *only* write this
|
|
7
|
+
* lot gives an agent onto the redirect table — editing or deleting an
|
|
8
|
+
* existing rule stays a human-only action in the admin's Redirections
|
|
9
|
+
* screen (`packages/admin/src/routes/redirects.tsx`), which this tool never
|
|
10
|
+
* touches.
|
|
11
|
+
*
|
|
12
|
+
* `reversible: true` with a real `revert`: the redirect this call created is
|
|
13
|
+
* exactly the one thing `revert` removes, by `from` — R6's bar for letting
|
|
14
|
+
* `autonomous` autonomy apply this itself without forced human approval on
|
|
15
|
+
* top of the autonomy gate.
|
|
16
|
+
*
|
|
17
|
+
* A narrow structural type, not the full `RedirectStore`: only the three
|
|
18
|
+
* methods this tool actually calls.
|
|
19
|
+
*/
|
|
20
|
+
export interface RedirectWriter {
|
|
21
|
+
add(input: {
|
|
22
|
+
readonly from: string;
|
|
23
|
+
readonly to: string;
|
|
24
|
+
readonly status?: 301 | 302 | 307 | 308;
|
|
25
|
+
readonly reason?: 'slug-change' | 'manual' | 'import' | 'agent';
|
|
26
|
+
}): Promise<{
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly from: string;
|
|
29
|
+
readonly to: string;
|
|
30
|
+
readonly status: number;
|
|
31
|
+
readonly createdAt: number;
|
|
32
|
+
}>;
|
|
33
|
+
remove(from: string): Promise<boolean>;
|
|
34
|
+
}
|
|
35
|
+
declare const InputSchema: z.ZodObject<{
|
|
36
|
+
from: z.ZodString;
|
|
37
|
+
to: z.ZodString;
|
|
38
|
+
status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<301>, z.ZodLiteral<302>, z.ZodLiteral<307>, z.ZodLiteral<308>]>>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
type Input = z.infer<typeof InputSchema>;
|
|
41
|
+
declare const OutputSchema: z.ZodObject<{
|
|
42
|
+
id: z.ZodString;
|
|
43
|
+
from: z.ZodString;
|
|
44
|
+
to: z.ZodString;
|
|
45
|
+
status: z.ZodNumber;
|
|
46
|
+
createdAt: z.ZodNumber;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
type Output = z.infer<typeof OutputSchema>;
|
|
49
|
+
export declare function createRedirectCreateTool(store: RedirectWriter): ToolDefinition<Input, Output>;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=redirects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.d.ts","sourceRoot":"","sources":["../../../src/tools/core/redirects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,KAAK,EAAE;QACT,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;QACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;KAChE,GAAG,OAAO,CAAC;QACV,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAC3B,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC;AAED,QAAA,MAAM,WAAW;;;;iBAOf,CAAA;AACF,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAExC,QAAA,MAAM,YAAY;;;;;;iBAMhB,CAAA;AACF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAgC7F"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineTool } from '../define.js';
|
|
3
|
+
const InputSchema = z.object({
|
|
4
|
+
from: z.string().min(1),
|
|
5
|
+
to: z.string().min(1),
|
|
6
|
+
// 410 (Gone) is deliberately not offered here: this tool exists to send
|
|
7
|
+
// visitors *somewhere*, never to mark a page dead — an admin who decides
|
|
8
|
+
// that is the right call makes it by hand, in the Redirections screen.
|
|
9
|
+
status: z.union([z.literal(301), z.literal(302), z.literal(307), z.literal(308)]).optional(),
|
|
10
|
+
});
|
|
11
|
+
const OutputSchema = z.object({
|
|
12
|
+
id: z.string(),
|
|
13
|
+
from: z.string(),
|
|
14
|
+
to: z.string(),
|
|
15
|
+
status: z.number(),
|
|
16
|
+
createdAt: z.number(),
|
|
17
|
+
});
|
|
18
|
+
export function createRedirectCreateTool(store) {
|
|
19
|
+
return defineTool({
|
|
20
|
+
name: 'redirects.create',
|
|
21
|
+
version: '1.0.0',
|
|
22
|
+
description: 'Create (or replace) a redirect from one site path to another. Always recorded with reason "agent", never "manual", so it is visible in the Redirections screen as agent-made.',
|
|
23
|
+
input: InputSchema,
|
|
24
|
+
output: OutputSchema,
|
|
25
|
+
permissions: ['redirects.write'],
|
|
26
|
+
sideEffects: true,
|
|
27
|
+
reversible: true,
|
|
28
|
+
cost: 'low',
|
|
29
|
+
rateLimit: { perHour: 30 },
|
|
30
|
+
async execute(input) {
|
|
31
|
+
const record = await store.add({
|
|
32
|
+
from: input.from,
|
|
33
|
+
to: input.to,
|
|
34
|
+
...(input.status === undefined ? {} : { status: input.status }),
|
|
35
|
+
reason: 'agent',
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
id: record.id,
|
|
39
|
+
from: record.from,
|
|
40
|
+
to: record.to,
|
|
41
|
+
status: record.status,
|
|
42
|
+
createdAt: record.createdAt,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
async revert(receipt) {
|
|
46
|
+
await store.remove(receipt.from);
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=redirects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../../src/tools/core/redirects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAoCzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,wEAAwE;IACxE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7F,CAAC,CAAA;AAGF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF,MAAM,UAAU,wBAAwB,CAAC,KAAqB;IAC5D,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,+KAA+K;QACjL,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,MAAM,EAAE,OAAO;aAChB,CAAC,CAAA;YACF,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAA;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogenta/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "The agentic runtime: LLM provider abstraction, tool-calling, execution loop, permissions, memory, budgets, audit.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -27,10 +27,12 @@
|
|
|
27
27
|
"directory": "packages/agents"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
+
"@langchain/langgraph": "^1.4.12",
|
|
30
31
|
"zod": "^4.4.3",
|
|
31
|
-
"@cogenta/core": "0.
|
|
32
|
-
"@cogenta/render": "0.1
|
|
33
|
-
"@cogenta/schema": "0.
|
|
32
|
+
"@cogenta/core": "0.6.0",
|
|
33
|
+
"@cogenta/render": "0.2.1",
|
|
34
|
+
"@cogenta/schema": "0.4.1",
|
|
35
|
+
"@cogenta/blocks": "1.0.1"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
38
|
"typescript": "^7.0.2",
|