@happyvertical/smrt-cli 0.53.3 → 0.53.5
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.md +3 -0
- package/README.md +64 -0
- package/agents/app-commands.md +118 -0
- package/bin/smrt-web.mjs +19 -0
- package/bin/smrt.js +18 -12
- package/dist/{ApiKey-BZmbOTnL-DchyhIPA.js → ApiKey-BZmbOTnL-BbZupUZ3.js} +2 -2
- package/dist/ApiKeyCollection-Bfb_nw81-DYAZwx0O.js +87 -0
- package/dist/AuditLogCollection-B1YonCAP-Bkj2Ezon.js +193 -0
- package/dist/{NostrIdentity-n70E0vck-CLGPdJ1W.js → NostrIdentity-n70E0vck-Di3_eNCq.js} +4 -4
- package/dist/NostrIdentityCollection-Ca74dkaL-DvjOg9Xy.js +127 -0
- package/dist/{OidcIdentity-Cb1bxreM-DPBTZddF.js → OidcIdentity-Cb1bxreM-LXmC7uAf.js} +2 -2
- package/dist/OidcIdentityCollection-TV8VdK69-Cv1ZTeuk.js +86 -0
- package/dist/ProfileAssetCollection-B9hacUJa-CPuaWLk4.js +101 -0
- package/dist/{ProfileCollection-DuJT7Mum-BUYQQ9xZ.js → ProfileCollection-DuJT7Mum-nXbHrPpX.js} +31 -31
- package/dist/ProfileLinkCollection-4uNURz32-CbKZYmYm.js +233 -0
- package/dist/ProfileMetadataCollection-DQhbfEfa-_1rQCLTR.js +108 -0
- package/dist/ProfileMetafieldCollection-CoBuM_5G-CPjW3l5r.js +145 -0
- package/dist/ProfileRelationshipCollection-DUVgaIqf-RCDqYz6O.js +161 -0
- package/dist/ProfileRelationshipTermCollection-DtA9OM23-BoGhQBSQ.js +107 -0
- package/dist/{ProfileRelationshipType-BRiRka6t-xzRfZRFG.js → ProfileRelationshipType-BRiRka6t-Dezjv5jP.js} +1 -1
- package/dist/ProfileRelationshipTypeCollection-BdXwd7Kf-HoTmV1q-.js +57 -0
- package/dist/app/cli.d.ts +51 -0
- package/dist/app/cli.d.ts.map +1 -0
- package/dist/app/errors.d.ts +55 -0
- package/dist/app/errors.d.ts.map +1 -0
- package/dist/app/identity.d.ts +24 -0
- package/dist/app/identity.d.ts.map +1 -0
- package/dist/app/index.d.ts +20 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/launchers.d.ts +51 -0
- package/dist/app/launchers.d.ts.map +1 -0
- package/dist/app/operations.d.ts +30 -0
- package/dist/app/operations.d.ts.map +1 -0
- package/dist/app/portability-assets.d.ts +151 -0
- package/dist/app/portability-assets.d.ts.map +1 -0
- package/dist/app/portability.d.ts +117 -0
- package/dist/app/portability.d.ts.map +1 -0
- package/dist/app/process-record.d.ts +54 -0
- package/dist/app/process-record.d.ts.map +1 -0
- package/dist/app/runtime.d.ts +98 -0
- package/dist/app/runtime.d.ts.map +1 -0
- package/dist/app/tokens.d.ts +21 -0
- package/dist/app/tokens.d.ts.map +1 -0
- package/dist/app.d.ts +1 -0
- package/dist/app.js +4 -0
- package/dist/cli-OZsH5cdL.js +1602 -0
- package/dist/cli-generator.d.ts.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/utilities.d.ts.map +1 -1
- package/dist/{commands-B8N38deG.js → commands-UXK2F_0j.js} +49 -336
- package/dist/database-environment-D_Gk1Brf.js +20 -0
- package/dist/database-environment.d.ts +43 -0
- package/dist/database-environment.d.ts.map +1 -0
- package/dist/dist-BVjJWjT-.js +20 -0
- package/dist/{dist-B62O-xH6.js → dist-C87Ib9Vx.js} +2 -2
- package/dist/{dist-CL9KGm1j.js → dist-DLw_E34G.js} +1654 -1748
- package/dist/{dist-BBQyIRsO.js → dist-GIaWaUho.js} +4 -4
- package/dist/{dist-C8BOgli4.js → dist-RSE5hCY4.js} +3 -3
- package/dist/index.js +19 -9
- package/dist/mcp-apps-packaging-CixRnxz_.js +286 -0
- package/dist/{oidcProvisioningPrimitives-D9OYu5-F-l8afZs4F.js → oidcProvisioningPrimitives-D9OYu5-F-T9KkkDCd.js} +5 -5
- package/dist/portability-CES1YC2m.js +859 -0
- package/dist/resolveIdentity-B-PK6RwU-C9ogf8YG.js +269 -0
- package/package.json +19 -14
- package/dist/ApiKeyCollection-Bfb_nw81-DR5XF_SZ.js +0 -2
- package/dist/AuditLogCollection-B1YonCAP-PbzALncL.js +0 -2
- package/dist/NostrIdentityCollection-Ca74dkaL-C2r-uDlC.js +0 -2
- package/dist/OidcIdentityCollection-TV8VdK69-2fZROnih.js +0 -2
- package/dist/ProfileAssetCollection-B9hacUJa-D33sifgF.js +0 -2
- package/dist/ProfileLinkCollection-4uNURz32-CHDTinax.js +0 -2
- package/dist/ProfileMetadataCollection-DQhbfEfa-BQTogfVX.js +0 -2
- package/dist/ProfileMetafieldCollection-CoBuM_5G-BXtoIP02.js +0 -2
- package/dist/ProfileRelationshipCollection-DUVgaIqf-CNMliUF3.js +0 -2
- package/dist/ProfileRelationshipTermCollection-DtA9OM23-DPOMtMr7.js +0 -2
- package/dist/ProfileRelationshipTypeCollection-BdXwd7Kf-Co3PdH01.js +0 -2
- package/dist/resolveIdentity-B-PK6RwU-B306Ch1I.js +0 -2
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
+
import { l as withSystemContext } from "./dist-C87Ib9Vx.js";
|
|
3
|
+
import { n as __exportAll$1, t as NostrIdentity, u as verifyAuthEvent } from "./NostrIdentity-n70E0vck-Di3_eNCq.js";
|
|
4
|
+
import { t as ApiKey } from "./ApiKey-BZmbOTnL-BbZupUZ3.js";
|
|
5
|
+
import { t as OidcIdentity } from "./OidcIdentity-Cb1bxreM-LXmC7uAf.js";
|
|
6
|
+
import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-DuJT7Mum-nXbHrPpX.js";
|
|
7
|
+
import { a as createOidcProvisioningPerson, o as insertOidcProvisioningIdentity } from "./oidcProvisioningPrimitives-D9OYu5-F-T9KkkDCd.js";
|
|
8
|
+
import { resolveDatabase } from "@happyvertical/smrt-core";
|
|
9
|
+
//#region ../profiles/dist/chunks/resolveIdentity-B-PK6RwU.js
|
|
10
|
+
var resolveIdentity_B_PK6RwU_exports = /* @__PURE__ */ __exportAll({
|
|
11
|
+
i: () => resolveIdentity_exports,
|
|
12
|
+
n: () => createProfileFromOidc,
|
|
13
|
+
r: () => resolveIdentity,
|
|
14
|
+
t: () => createProfileFromNostr
|
|
15
|
+
});
|
|
16
|
+
var resolveIdentity_exports = /* @__PURE__ */ __exportAll$1({
|
|
17
|
+
createProfileFromNostr: () => createProfileFromNostr,
|
|
18
|
+
createProfileFromOidc: () => createProfileFromOidc,
|
|
19
|
+
resolveIdentity: () => resolveIdentity,
|
|
20
|
+
reuseExistingOidcIdentityForProfile: () => reuseExistingOidcIdentityForProfile
|
|
21
|
+
});
|
|
22
|
+
async function resolveIdentity(context) {
|
|
23
|
+
const options = { db: context.db };
|
|
24
|
+
if (context.apiKey) {
|
|
25
|
+
const apiKey = await ApiKey.verify(context.apiKey, options);
|
|
26
|
+
if (apiKey) {
|
|
27
|
+
const profile = await apiKey.getProfile();
|
|
28
|
+
if (profile) return {
|
|
29
|
+
profile,
|
|
30
|
+
source: "api_key",
|
|
31
|
+
apiKey
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (context.oidcSession?.sub && context.oidcSession?.iss) {
|
|
36
|
+
const oidcIdentity = await OidcIdentity.findBySubject(context.oidcSession.iss, context.oidcSession.sub, options);
|
|
37
|
+
if (oidcIdentity) {
|
|
38
|
+
await oidcIdentity.recordUsage();
|
|
39
|
+
const profile = await oidcIdentity.getProfile();
|
|
40
|
+
if (profile) return {
|
|
41
|
+
profile,
|
|
42
|
+
source: "oidc",
|
|
43
|
+
oidcIdentity
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (context.nostrAuth?.event && context.nostrAuth?.challenge) {
|
|
48
|
+
const { event, challenge } = context.nostrAuth;
|
|
49
|
+
if (verifyAuthEvent(event, challenge).valid) {
|
|
50
|
+
const nostrIdentity = await NostrIdentity.findByPubkey(event.pubkey, options);
|
|
51
|
+
if (nostrIdentity) {
|
|
52
|
+
await nostrIdentity.recordUsage();
|
|
53
|
+
const profile = await nostrIdentity.getProfile();
|
|
54
|
+
if (profile) return {
|
|
55
|
+
profile,
|
|
56
|
+
source: "nostr",
|
|
57
|
+
nostrIdentity
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (context.actor) {
|
|
63
|
+
const profile = await findProfileByExternalId("github", context.actor, options);
|
|
64
|
+
if (profile) return {
|
|
65
|
+
profile,
|
|
66
|
+
source: "actor"
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
profile: null,
|
|
71
|
+
source: "none"
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function findProfileByExternalId(provider, externalId, options) {
|
|
75
|
+
const { OidcIdentityCollection } = await import("./OidcIdentityCollection-TV8VdK69-Cv1ZTeuk.js").then((n) => n.r).then((n) => n.r);
|
|
76
|
+
const identities = await (await OidcIdentityCollection.create(options)).findByProvider(provider);
|
|
77
|
+
for (const identity of identities) if (identity.subject === externalId || identity.email?.includes(externalId)) {
|
|
78
|
+
const profile = await identity.getProfile();
|
|
79
|
+
if (profile) return profile;
|
|
80
|
+
}
|
|
81
|
+
const { ProfileCollection } = await import("./ProfileCollection-DuJT7Mum-nXbHrPpX.js").then((n) => n.o).then((n) => n.r);
|
|
82
|
+
const profiles = await (await ProfileCollection.create(options)).list({
|
|
83
|
+
where: { email: `${externalId}@users.noreply.github.com` },
|
|
84
|
+
limit: 1
|
|
85
|
+
});
|
|
86
|
+
if (profiles.length > 0) return profiles[0];
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
async function createProfileFromOidc(claims, provider, options) {
|
|
90
|
+
return coordinateProfileOidcProvisioning(claims, provider, options);
|
|
91
|
+
}
|
|
92
|
+
async function reuseExistingOidcIdentityForProfile(profileId, claims, provider, options) {
|
|
93
|
+
const normalizedClaims = normalizeOidcProfileClaims(claims);
|
|
94
|
+
return coordinateOidcProvisioning({
|
|
95
|
+
db: await resolveOidcProfileDatabase(options.db),
|
|
96
|
+
lockKeys: [`identity:${OidcIdentity.buildIdentityKey(normalizedClaims.iss, normalizedClaims.sub)}`],
|
|
97
|
+
isRaceConflict: isOidcProvisioningRaceConflict,
|
|
98
|
+
createTransactionError: (message, cause) => new Error(message, cause === void 0 ? void 0 : { cause }),
|
|
99
|
+
createConcurrencyError: (cause) => new Error("Concurrent exact OIDC identity reuse did not converge.", cause === void 0 ? void 0 : { cause }),
|
|
100
|
+
rebindRootResult: rebindOidcProfileResult,
|
|
101
|
+
provision: (tx) => withSystemContext(async () => {
|
|
102
|
+
const { OidcIdentityCollection } = await import("./OidcIdentityCollection-TV8VdK69-Cv1ZTeuk.js").then((n) => n.r).then((n) => n.r);
|
|
103
|
+
const identity = await (await OidcIdentityCollection.create({ db: tx })).findBySubject(normalizedClaims.iss, normalizedClaims.sub);
|
|
104
|
+
if (!identity) throw new Error("OidcIdentity.findOrCreate() no longer creates authentication links; use UserCollection.getOrCreateFromOidc() or createProfileFromOidc().");
|
|
105
|
+
if (identity.profileId !== profileId) throw new Error(`OIDC identity ${normalizedClaims.iss} subject ${normalizedClaims.sub} belongs to a different Profile.`);
|
|
106
|
+
const profile = await identity.getProfile();
|
|
107
|
+
if (!profile) throw new Error("The exact OIDC identity has no linked Profile.");
|
|
108
|
+
identity.provider = provider;
|
|
109
|
+
if (normalizedClaims.email) identity.email = normalizedClaims.email;
|
|
110
|
+
identity.lastUsedAt = /* @__PURE__ */ new Date();
|
|
111
|
+
await identity.save();
|
|
112
|
+
return {
|
|
113
|
+
profile,
|
|
114
|
+
oidcIdentity: identity,
|
|
115
|
+
created: false
|
|
116
|
+
};
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async function coordinateProfileOidcProvisioning(claims, provider, options) {
|
|
121
|
+
const normalizedClaims = normalizeOidcProfileClaims(claims);
|
|
122
|
+
return coordinateOidcProvisioning({
|
|
123
|
+
db: await resolveOidcProfileDatabase(options.db),
|
|
124
|
+
lockKeys: [`identity:${OidcIdentity.buildIdentityKey(normalizedClaims.iss, normalizedClaims.sub)}`, ...normalizedClaims.email ? [`email:${normalizedClaims.email}`] : []],
|
|
125
|
+
isRaceConflict: isOidcProvisioningRaceConflict,
|
|
126
|
+
createTransactionError: (message, cause) => new Error(message, cause === void 0 ? void 0 : { cause }),
|
|
127
|
+
createConcurrencyError: (cause) => new Error("Concurrent OIDC Profile provisioning did not converge.", cause === void 0 ? void 0 : { cause }),
|
|
128
|
+
rebindRootResult: rebindOidcProfileResult,
|
|
129
|
+
provision: (tx) => withSystemContext(() => provisionOidcProfile(normalizedClaims, provider, {
|
|
130
|
+
...options,
|
|
131
|
+
db: tx
|
|
132
|
+
}))
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async function provisionOidcProfile(claims, provider, options) {
|
|
136
|
+
const { OidcIdentityCollection } = await import("./OidcIdentityCollection-TV8VdK69-Cv1ZTeuk.js").then((n) => n.r).then((n) => n.r);
|
|
137
|
+
const existingIdentity = await (await OidcIdentityCollection.create(options)).findBySubject(claims.iss, claims.sub);
|
|
138
|
+
if (existingIdentity) {
|
|
139
|
+
const profile2 = await existingIdentity.getProfile();
|
|
140
|
+
if (!profile2) throw new Error("The exact OIDC identity has no linked Profile.");
|
|
141
|
+
profile2.id = requireOidcProfileId(existingIdentity.profileId);
|
|
142
|
+
if (claims.email) existingIdentity.email = claims.email;
|
|
143
|
+
existingIdentity.lastUsedAt = /* @__PURE__ */ new Date();
|
|
144
|
+
await existingIdentity.save();
|
|
145
|
+
return {
|
|
146
|
+
profile: profile2,
|
|
147
|
+
oidcIdentity: existingIdentity,
|
|
148
|
+
created: false
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const { ProfileCollection } = await import("./ProfileCollection-DuJT7Mum-nXbHrPpX.js").then((n) => n.o).then((n) => n.r);
|
|
152
|
+
const profileCollection = await ProfileCollection.create(options);
|
|
153
|
+
if (claims.email) {
|
|
154
|
+
if (await profileCollection.findUniqueGlobalPersonByEmail(claims.email)) {
|
|
155
|
+
if (claims.email_verified !== true) throw new Error(`OIDC email ${claims.email} is not verified and already belongs to a Profile.`);
|
|
156
|
+
throw new Error(`OIDC email ${claims.email} already belongs to a Profile; createProfileFromOidc() cannot prove that Profile is unowned. Use UserCollection.getOrCreateFromOidc() for owner-aware linking.`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const profile = await createOidcProvisioningPerson(options.db, {
|
|
160
|
+
email: claims.email ?? "",
|
|
161
|
+
name: claims.name,
|
|
162
|
+
preferredUsername: claims.preferred_username,
|
|
163
|
+
subject: claims.sub
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
profile,
|
|
167
|
+
oidcIdentity: await insertOidcProvisioningIdentity(options.db, {
|
|
168
|
+
email: claims.email,
|
|
169
|
+
issuer: claims.iss,
|
|
170
|
+
profileId: requireOidcProfileId(profile.id),
|
|
171
|
+
provider,
|
|
172
|
+
subject: claims.sub
|
|
173
|
+
}),
|
|
174
|
+
created: true
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async function rebindOidcProfileResult(result, rootDb) {
|
|
178
|
+
const { OidcIdentityCollection } = await import("./OidcIdentityCollection-TV8VdK69-Cv1ZTeuk.js").then((n) => n.r).then((n) => n.r);
|
|
179
|
+
const { ProfileCollection } = await import("./ProfileCollection-DuJT7Mum-nXbHrPpX.js").then((n) => n.o).then((n) => n.r);
|
|
180
|
+
const profileId = requireOidcProfileId(result.profile.id);
|
|
181
|
+
const identityId = requireOidcProfileId(result.oidcIdentity.id);
|
|
182
|
+
const [profile, oidcIdentity] = await withSystemContext(async () => {
|
|
183
|
+
const profiles = await ProfileCollection.create({ db: rootDb });
|
|
184
|
+
const identities = await OidcIdentityCollection.create({ db: rootDb });
|
|
185
|
+
return [await profiles.get({ id: profileId }), await identities.get({ id: identityId })];
|
|
186
|
+
});
|
|
187
|
+
if (!profile || !oidcIdentity) throw new Error("Committed OIDC Profile provisioning result was not found.");
|
|
188
|
+
profile.id = profileId;
|
|
189
|
+
oidcIdentity.id = identityId;
|
|
190
|
+
oidcIdentity.profileId = profileId;
|
|
191
|
+
return {
|
|
192
|
+
...result,
|
|
193
|
+
profile,
|
|
194
|
+
oidcIdentity
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function normalizeOidcProfileClaims(claims) {
|
|
198
|
+
const sub = claims?.sub;
|
|
199
|
+
const iss = claims?.iss;
|
|
200
|
+
if (typeof sub !== "string" || sub.trim().length === 0 || typeof iss !== "string" || iss.trim().length === 0) throw new Error("Invalid OIDC claims: both \"sub\" and \"iss\" must be non-empty strings.");
|
|
201
|
+
const suppliedEmail = claims.email;
|
|
202
|
+
return {
|
|
203
|
+
...claims,
|
|
204
|
+
sub,
|
|
205
|
+
iss,
|
|
206
|
+
email: typeof suppliedEmail === "string" && suppliedEmail.trim() ? normalizeIdentityEmail(suppliedEmail) : void 0
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function requireOidcProfileId(value) {
|
|
210
|
+
if (typeof value !== "string" || !value) throw new Error("OIDC Profile provisioning did not produce an id.");
|
|
211
|
+
return value;
|
|
212
|
+
}
|
|
213
|
+
async function resolveOidcProfileDatabase(db) {
|
|
214
|
+
if (!db) throw new Error("OIDC Profile provisioning requires an initialized database.");
|
|
215
|
+
return resolveDatabase(db);
|
|
216
|
+
}
|
|
217
|
+
async function createProfileFromNostr(email, nostrData, options) {
|
|
218
|
+
const normalizedEmail = normalizeIdentityEmail(email);
|
|
219
|
+
const existingIdentity = await NostrIdentity.findByEmail(normalizedEmail, options);
|
|
220
|
+
if (existingIdentity) {
|
|
221
|
+
const profile2 = await existingIdentity.getProfile();
|
|
222
|
+
if (profile2) return {
|
|
223
|
+
profile: profile2,
|
|
224
|
+
nostrIdentity: existingIdentity,
|
|
225
|
+
created: false
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
const { Person } = await import("./oidcProvisioningPrimitives-D9OYu5-F-T9KkkDCd.js").then((n) => n.s).then((n) => n.o);
|
|
229
|
+
const { ProfileTypeCollection } = await import("./oidcProvisioningPrimitives-D9OYu5-F-T9KkkDCd.js").then((n) => n.s).then((n) => n.c);
|
|
230
|
+
let personType = await (await ProfileTypeCollection.create(options)).getBySlug("person");
|
|
231
|
+
if (!personType) {
|
|
232
|
+
const { ProfileType } = await import("./ProfileCollection-DuJT7Mum-nXbHrPpX.js").then((n) => n.o).then((n) => n.h);
|
|
233
|
+
personType = new ProfileType({
|
|
234
|
+
...options,
|
|
235
|
+
slug: "person",
|
|
236
|
+
name: "Person",
|
|
237
|
+
description: "Individual person profile"
|
|
238
|
+
});
|
|
239
|
+
await personType.initialize();
|
|
240
|
+
await personType.save();
|
|
241
|
+
}
|
|
242
|
+
const profile = new Person({
|
|
243
|
+
...options,
|
|
244
|
+
typeId: personType.id,
|
|
245
|
+
email: normalizedEmail,
|
|
246
|
+
name: normalizedEmail.split("@")[0]
|
|
247
|
+
});
|
|
248
|
+
await profile.initialize();
|
|
249
|
+
await profile.save();
|
|
250
|
+
const nostrIdentity = new NostrIdentity({
|
|
251
|
+
...options,
|
|
252
|
+
profileId: profile.id,
|
|
253
|
+
pubkey: nostrData.pubkey,
|
|
254
|
+
encryptedPrivkey: nostrData.encryptedPrivkey,
|
|
255
|
+
encryptionIv: nostrData.encryptionIv,
|
|
256
|
+
encryptionTag: nostrData.encryptionTag,
|
|
257
|
+
email: normalizedEmail,
|
|
258
|
+
nip05Username: nostrData.nip05Username?.toLowerCase() || normalizedEmail.split("@")[0]
|
|
259
|
+
});
|
|
260
|
+
await nostrIdentity.initialize();
|
|
261
|
+
await nostrIdentity.save();
|
|
262
|
+
return {
|
|
263
|
+
profile,
|
|
264
|
+
nostrIdentity,
|
|
265
|
+
created: true
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
//#endregion
|
|
269
|
+
export { resolveIdentity_B_PK6RwU_exports as i, createProfileFromOidc as n, resolveIdentity as r, createProfileFromNostr as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-cli",
|
|
3
|
-
"version": "0.53.
|
|
3
|
+
"version": "0.53.5",
|
|
4
4
|
"description": "Developer CLI for SMRT framework - introspection, testing, and project management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,22 +22,27 @@
|
|
|
22
22
|
".": {
|
|
23
23
|
"types": "./dist/index.d.ts",
|
|
24
24
|
"import": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./app": {
|
|
27
|
+
"types": "./dist/app.d.ts",
|
|
28
|
+
"import": "./dist/app.js"
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
"dependencies": {
|
|
28
|
-
"@happyvertical/ai": "^0.
|
|
29
|
-
"@happyvertical/files": "^0.
|
|
30
|
-
"@happyvertical/logger": "^0.
|
|
31
|
-
"@happyvertical/smrt-agents": "0.53.
|
|
32
|
-
"@happyvertical/smrt-
|
|
33
|
-
"@happyvertical/smrt-
|
|
34
|
-
"@happyvertical/smrt-
|
|
35
|
-
"@happyvertical/smrt-
|
|
36
|
-
"@happyvertical/smrt-
|
|
37
|
-
"@happyvertical/smrt-
|
|
38
|
-
"@happyvertical/smrt-
|
|
39
|
-
"@happyvertical/
|
|
40
|
-
"@happyvertical/
|
|
32
|
+
"@happyvertical/ai": "^0.100.3",
|
|
33
|
+
"@happyvertical/files": "^0.100.3",
|
|
34
|
+
"@happyvertical/logger": "^0.100.3",
|
|
35
|
+
"@happyvertical/smrt-agents": "0.53.5",
|
|
36
|
+
"@happyvertical/smrt-app-runtime": "0.53.5",
|
|
37
|
+
"@happyvertical/smrt-config": "0.53.5",
|
|
38
|
+
"@happyvertical/smrt-core": "0.53.5",
|
|
39
|
+
"@happyvertical/smrt-dev-mcp": "0.53.5",
|
|
40
|
+
"@happyvertical/smrt-ledgers": "0.53.5",
|
|
41
|
+
"@happyvertical/smrt-playground": "0.53.5",
|
|
42
|
+
"@happyvertical/smrt-types": "0.53.5",
|
|
43
|
+
"@happyvertical/smrt-users": "0.53.5",
|
|
44
|
+
"@happyvertical/sql": "^0.100.3",
|
|
45
|
+
"@happyvertical/utils": "^0.100.3",
|
|
41
46
|
"acorn": "^8.18.0",
|
|
42
47
|
"fast-glob": "3.3.3",
|
|
43
48
|
"tar": "^7.5.22",
|