mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-14 06:47:28 +00:00
AgentGit is a thin, DID-gated source-collaboration layer over a backend forge (default Forgejo at git.profullstack.com, BBS-members-only) — not a new git host. M1 implements the contract and engines: - forge/adapter.ts: ForgeAdapter interface (only forge-specific surface) - forge/forgejo.ts: ForgejoAdapter over Forgejo/Gitea REST v1 (injectable fetch, typed errors), incl. ensureUser for member provisioning - access.ts: gateAccess DID membership gate (owner/role/visibility) - merge-policy.ts: evaluateMergePolicy pure engine (reviews, reputation floor, checks, escrow, merge method, agent-merge toggle) - service.ts: AgentGitService ties gate + policy to the adapter; refuses policy-failing merges; provisionMember hook for AgentBBS - schemas: logicsrc-repo + logicsrc-pull-request, registered in @logicsrc/validators with fixtures - docs/agentgit.md spec; plugin wired into root build (default/disabled) 27 vitest tests pass; full monorepo build green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
3 KiB
TypeScript
49 lines
3 KiB
TypeScript
import agentSchema from "../../schemas/schemas/logicsrc-agent.schema.json" with { type: "json" };
|
|
import accountAuditEventSchema from "../../schemas/schemas/logicsrc-account-audit-event.schema.json" with { type: "json" };
|
|
import accountGrantSchema from "../../schemas/schemas/logicsrc-account-grant.schema.json" with { type: "json" };
|
|
import accountProviderSchema from "../../schemas/schemas/logicsrc-account-provider.schema.json" with { type: "json" };
|
|
import connectedAccountSchema from "../../schemas/schemas/logicsrc-connected-account.schema.json" with { type: "json" };
|
|
import emailMessageSchema from "../../schemas/schemas/logicsrc-email-message.schema.json" with { type: "json" };
|
|
import eventSchema from "../../schemas/schemas/logicsrc-event.schema.json" with { type: "json" };
|
|
import pluginSchema from "../../schemas/schemas/logicsrc-plugin.schema.json" with { type: "json" };
|
|
import pullRequestSchema from "../../schemas/schemas/logicsrc-pull-request.schema.json" with { type: "json" };
|
|
import repoSchema from "../../schemas/schemas/logicsrc-repo.schema.json" with { type: "json" };
|
|
import runSchema from "../../schemas/schemas/logicsrc-run.schema.json" with { type: "json" };
|
|
import socialPostSchema from "../../schemas/schemas/logicsrc-social-post.schema.json" with { type: "json" };
|
|
import taskSchema from "../../schemas/schemas/logicsrc-task.schema.json" with { type: "json" };
|
|
import agentadAdSchema from "../../schemas/schemas/agentad-ad.schema.json" with { type: "json" };
|
|
import agentadPlacementSchema from "../../schemas/schemas/agentad-placement.schema.json" with { type: "json" };
|
|
import agentadAdRequestSchema from "../../schemas/schemas/agentad-ad-request.schema.json" with { type: "json" };
|
|
import agentadAdResponseSchema from "../../schemas/schemas/agentad-ad-response.schema.json" with { type: "json" };
|
|
import agentadImpressionSchema from "../../schemas/schemas/agentad-impression.schema.json" with { type: "json" };
|
|
import agentadClickSchema from "../../schemas/schemas/agentad-click.schema.json" with { type: "json" };
|
|
import agentadCampaignSchema from "../../schemas/schemas/agentad-campaign.schema.json" with { type: "json" };
|
|
|
|
export const schemas = {
|
|
agent: agentSchema,
|
|
"account-audit-event": accountAuditEventSchema,
|
|
"account-grant": accountGrantSchema,
|
|
"account-provider": accountProviderSchema,
|
|
"connected-account": connectedAccountSchema,
|
|
"email-message": emailMessageSchema,
|
|
event: eventSchema,
|
|
plugin: pluginSchema,
|
|
"pull-request": pullRequestSchema,
|
|
repo: repoSchema,
|
|
run: runSchema,
|
|
"social-post": socialPostSchema,
|
|
task: taskSchema,
|
|
"agentad-ad": agentadAdSchema,
|
|
"agentad-placement": agentadPlacementSchema,
|
|
"agentad-ad-request": agentadAdRequestSchema,
|
|
"agentad-ad-response": agentadAdResponseSchema,
|
|
"agentad-impression": agentadImpressionSchema,
|
|
"agentad-click": agentadClickSchema,
|
|
"agentad-campaign": agentadCampaignSchema
|
|
} as const;
|
|
|
|
export type SchemaKind = keyof typeof schemas;
|
|
|
|
export function isSchemaKind(value: string): value is SchemaKind {
|
|
return Object.hasOwn(schemas, value);
|
|
}
|