@stellar-light/api-client 1.0.1 → 1.1.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/README.md +1 -0
- package/dist/index.d.ts +218 -3
- package/dist/index.js +9 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -50,6 +50,7 @@ const research = await scout.searchResearch({
|
|
|
50
50
|
|---|---|
|
|
51
51
|
| `getStatus()` | `GET /api/status` |
|
|
52
52
|
| `searchProjects(params)` | `GET /api/projects/search` |
|
|
53
|
+
| `searchRepos(params)` | `GET /api/repos/search` |
|
|
53
54
|
| `getHackathons(params)` | `GET /api/hackathons` |
|
|
54
55
|
| `getHackathon(slug)` | `GET /api/hackathons/{slug}` |
|
|
55
56
|
| `compareHackathons(slugs)` | `GET /api/hackathons/compare` |
|
package/dist/index.d.ts
CHANGED
|
@@ -94,6 +94,56 @@ interface paths {
|
|
|
94
94
|
patch?: never;
|
|
95
95
|
trace?: never;
|
|
96
96
|
};
|
|
97
|
+
"/api/repos/search": {
|
|
98
|
+
parameters: {
|
|
99
|
+
query?: never;
|
|
100
|
+
header?: never;
|
|
101
|
+
path?: never;
|
|
102
|
+
cookie?: never;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Search the Stellar GitHub repo / code-reference index
|
|
106
|
+
* @description Search ~1,900 indexed-and-scored Stellar ecosystem GitHub repos by tech/keyword — the code layer beneath the project directory. Answers *'show me the repos / code for X'* and prior-art **code** lookups that project search can't. Indexes GitHub topics + description + language + README, expands synonyms (zk→zero-knowledge/snark, oracle→price-feed, …), and ranks by `repoScore` (0–100 = freshness + traction + hackathon/SCF/builder authority). Lead with high-score repos as the strongest references and cite each repo's `url` / `homepageUrl`. The same graded repos are injected inline into `/api/projects/search` as `codeReferences`.
|
|
107
|
+
*/
|
|
108
|
+
get: {
|
|
109
|
+
parameters: {
|
|
110
|
+
query?: {
|
|
111
|
+
/** @description Keyword query (free text) */
|
|
112
|
+
q?: components["parameters"]["q"];
|
|
113
|
+
/** @description Filter by primary language (case-insensitive substring, e.g. 'Rust', 'TypeScript') */
|
|
114
|
+
language?: string;
|
|
115
|
+
/** @description Only return repos with repoScore ≥ this (0–100). Use 40+ for high-signal references. */
|
|
116
|
+
minScore?: number;
|
|
117
|
+
/** @description Max results returned (per-page) */
|
|
118
|
+
limit?: components["parameters"]["limit"];
|
|
119
|
+
/** @description Number of matching rows to skip before returning (pagination). Page until offset + meta.counts.returned >= meta.counts.total. */
|
|
120
|
+
offset?: components["parameters"]["offset"];
|
|
121
|
+
};
|
|
122
|
+
header?: never;
|
|
123
|
+
path?: never;
|
|
124
|
+
cookie?: never;
|
|
125
|
+
};
|
|
126
|
+
requestBody?: never;
|
|
127
|
+
responses: {
|
|
128
|
+
/** @description Repo search results graded by repoScore */
|
|
129
|
+
200: {
|
|
130
|
+
headers: {
|
|
131
|
+
[name: string]: unknown;
|
|
132
|
+
};
|
|
133
|
+
content: {
|
|
134
|
+
"application/json": components["schemas"]["RepoSearchResponse"];
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
put?: never;
|
|
140
|
+
post?: never;
|
|
141
|
+
delete?: never;
|
|
142
|
+
options?: never;
|
|
143
|
+
head?: never;
|
|
144
|
+
patch?: never;
|
|
145
|
+
trace?: never;
|
|
146
|
+
};
|
|
97
147
|
"/api/hackathons": {
|
|
98
148
|
parameters: {
|
|
99
149
|
query?: never;
|
|
@@ -285,6 +335,109 @@ interface paths {
|
|
|
285
335
|
patch?: never;
|
|
286
336
|
trace?: never;
|
|
287
337
|
};
|
|
338
|
+
"/api/partners": {
|
|
339
|
+
parameters: {
|
|
340
|
+
query?: never;
|
|
341
|
+
header?: never;
|
|
342
|
+
path?: never;
|
|
343
|
+
cookie?: never;
|
|
344
|
+
};
|
|
345
|
+
/**
|
|
346
|
+
* List ecosystem partners
|
|
347
|
+
* @description Published partners (anchors, on/off ramps, infrastructure, tooling, protocols, wallets, audit firms). Each carries partner-claimed facts AND system-verified signals (GitHub activity, on-chain footprint, SCF involvement) plus a `freshness` object — consumers should down-rank or skip partners flagged `freshness.excludeFromMatching`. Fresh partners sort first.
|
|
348
|
+
*/
|
|
349
|
+
get: {
|
|
350
|
+
parameters: {
|
|
351
|
+
query?: {
|
|
352
|
+
/** @description Filter by partner type */
|
|
353
|
+
type?: "anchor" | "on-off-ramp" | "infrastructure" | "tooling" | "protocol" | "wallet" | "audit-firm" | "legal" | "agency" | "other";
|
|
354
|
+
/** @description Filter by sector served (defi, payments, rwa, stablecoins, …) */
|
|
355
|
+
sector?: string;
|
|
356
|
+
/** @description Filter by region served (global, latam, africa, …) */
|
|
357
|
+
region?: string;
|
|
358
|
+
/** @description Set to 1 to return only partners currently accepting new clients */
|
|
359
|
+
accepting?: "1";
|
|
360
|
+
/** @description Keyword query (free text) */
|
|
361
|
+
q?: components["parameters"]["q"];
|
|
362
|
+
/** @description Max results returned (per-page) */
|
|
363
|
+
limit?: components["parameters"]["limit"];
|
|
364
|
+
};
|
|
365
|
+
header?: never;
|
|
366
|
+
path?: never;
|
|
367
|
+
cookie?: never;
|
|
368
|
+
};
|
|
369
|
+
requestBody?: never;
|
|
370
|
+
responses: {
|
|
371
|
+
/** @description Partner directory */
|
|
372
|
+
200: {
|
|
373
|
+
headers: {
|
|
374
|
+
[name: string]: unknown;
|
|
375
|
+
};
|
|
376
|
+
content: {
|
|
377
|
+
"application/json": Record<string, never>;
|
|
378
|
+
};
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
};
|
|
382
|
+
put?: never;
|
|
383
|
+
post?: never;
|
|
384
|
+
delete?: never;
|
|
385
|
+
options?: never;
|
|
386
|
+
head?: never;
|
|
387
|
+
patch?: never;
|
|
388
|
+
trace?: never;
|
|
389
|
+
};
|
|
390
|
+
"/api/partners/{slug}": {
|
|
391
|
+
parameters: {
|
|
392
|
+
query?: never;
|
|
393
|
+
header?: never;
|
|
394
|
+
path?: never;
|
|
395
|
+
cookie?: never;
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* Get one partner's full profile
|
|
399
|
+
* @description Full published profile for one partner by slug, including verified signals + freshness. 404 for unknown or unpublished slugs.
|
|
400
|
+
*/
|
|
401
|
+
get: {
|
|
402
|
+
parameters: {
|
|
403
|
+
query?: never;
|
|
404
|
+
header?: never;
|
|
405
|
+
path: {
|
|
406
|
+
/** @description Partner slug */
|
|
407
|
+
slug: string;
|
|
408
|
+
};
|
|
409
|
+
cookie?: never;
|
|
410
|
+
};
|
|
411
|
+
requestBody?: never;
|
|
412
|
+
responses: {
|
|
413
|
+
/** @description Partner profile */
|
|
414
|
+
200: {
|
|
415
|
+
headers: {
|
|
416
|
+
[name: string]: unknown;
|
|
417
|
+
};
|
|
418
|
+
content: {
|
|
419
|
+
"application/json": Record<string, never>;
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
/** @description Partner not found or not published */
|
|
423
|
+
404: {
|
|
424
|
+
headers: {
|
|
425
|
+
[name: string]: unknown;
|
|
426
|
+
};
|
|
427
|
+
content: {
|
|
428
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
};
|
|
432
|
+
};
|
|
433
|
+
put?: never;
|
|
434
|
+
post?: never;
|
|
435
|
+
delete?: never;
|
|
436
|
+
options?: never;
|
|
437
|
+
head?: never;
|
|
438
|
+
patch?: never;
|
|
439
|
+
trace?: never;
|
|
440
|
+
};
|
|
288
441
|
"/api/rfps": {
|
|
289
442
|
parameters: {
|
|
290
443
|
query?: never;
|
|
@@ -342,7 +495,7 @@ interface paths {
|
|
|
342
495
|
};
|
|
343
496
|
/**
|
|
344
497
|
* Vector search over the Stellar research corpus
|
|
345
|
-
* @description Vector search over a 4,541-chunk corpus of primary Stellar sources: SEPs, SCF Handbook, dev docs, foundational papers (Mazières SCP), lumenloop community playbooks, Soroban audit reports (Certora, OtterSec, Halborn, OpenZeppelin, Code4rena, etc.), Electric Capital Developer Reports, SDF blog. Returns top-K chunks with severity metadata for audit chunks.
|
|
498
|
+
* @description Vector search over a 4,541-chunk corpus of primary Stellar sources: SEPs, SCF Handbook, dev docs, foundational papers (Mazières SCP), lumenloop community playbooks, Soroban audit reports (Certora, OtterSec, Halborn, OpenZeppelin, Code4rena, etc.), Electric Capital Developer Reports, SDF blog. Returns top-K chunks with severity metadata for audit chunks. Each result carries a `confidence` object — `{ score (0-1), label (high/medium/low), relevance, freshness, authority, ageDays }` — blending match strength, source-aware recency, and source authority so an agent can tell a strong, fresh, canonical hit from a weak or stale one. Sort by `confidence.score` for trust-ranked results; `meta.scoreModel.version` identifies the model. The raw `score` field remains cosine similarity (0–1, higher = more relevant).
|
|
346
499
|
*/
|
|
347
500
|
get: {
|
|
348
501
|
parameters: {
|
|
@@ -729,7 +882,7 @@ interface components {
|
|
|
729
882
|
category: "Infrastructure" | "Tooling" | "User-Facing App" | "Asset" | "Protocol/Contract" | "Anchor" | "Partner Integration";
|
|
730
883
|
shortDescription?: string;
|
|
731
884
|
/** @enum {string} */
|
|
732
|
-
status: "
|
|
885
|
+
status: "Draft" | "Development" | "Pre-Release" | "Live";
|
|
733
886
|
logoUrl?: string | null;
|
|
734
887
|
scfAwarded?: boolean;
|
|
735
888
|
scfTotalAwardedUSD?: number | null;
|
|
@@ -741,6 +894,19 @@ interface components {
|
|
|
741
894
|
score?: number;
|
|
742
895
|
/** Format: uri */
|
|
743
896
|
url?: string;
|
|
897
|
+
/** @description Editorial ranking boost (0-100); higher = more canonical for its category. */
|
|
898
|
+
prominence?: number;
|
|
899
|
+
verificationLevel?: string | null;
|
|
900
|
+
/** @description Capability tags (Wallet, DEX, Lending, Oracle, SDK, RPC, Faucet, NFT, RWA, Anchor, Stablecoin, Indexer, Explorer, Security, Gaming). */
|
|
901
|
+
types?: string[];
|
|
902
|
+
/** @description The project OWN canonical homes - cite these as the primary source, not StellarLight or any directory. Only present, non-empty fields are included. */
|
|
903
|
+
links?: {
|
|
904
|
+
website?: string;
|
|
905
|
+
github?: string;
|
|
906
|
+
docs?: string;
|
|
907
|
+
twitter?: string;
|
|
908
|
+
discord?: string;
|
|
909
|
+
};
|
|
744
910
|
};
|
|
745
911
|
ProjectSearchResponse: {
|
|
746
912
|
meta: components["schemas"]["Meta"] & {
|
|
@@ -752,6 +918,8 @@ interface components {
|
|
|
752
918
|
matchModeLabel?: string;
|
|
753
919
|
};
|
|
754
920
|
projects: components["schemas"]["Project"][];
|
|
921
|
+
/** @description Top graded repos matching the same query, surfaced inline (max 5, first page only; same shape as /api/repos/search). Cite as existing code references for prior-art questions. */
|
|
922
|
+
codeReferences?: components["schemas"]["Repo"][];
|
|
755
923
|
};
|
|
756
924
|
HackathonsResponse: {
|
|
757
925
|
meta?: components["schemas"]["Meta"] & {
|
|
@@ -768,6 +936,44 @@ interface components {
|
|
|
768
936
|
meta?: components["schemas"]["Meta"];
|
|
769
937
|
hackathon?: Record<string, never>;
|
|
770
938
|
};
|
|
939
|
+
/** @description An indexed Stellar ecosystem GitHub repository graded by repoScore. Cite the repo's url / homepageUrl as the primary source. */
|
|
940
|
+
Repo: {
|
|
941
|
+
/** @description owner/name */
|
|
942
|
+
fullName: string;
|
|
943
|
+
owner?: string | null;
|
|
944
|
+
name?: string | null;
|
|
945
|
+
/** Format: uri */
|
|
946
|
+
url?: string | null;
|
|
947
|
+
description?: string | null;
|
|
948
|
+
topics?: string[];
|
|
949
|
+
primaryLanguage?: string | null;
|
|
950
|
+
stars?: number;
|
|
951
|
+
openIssues?: number;
|
|
952
|
+
/** Format: date-time */
|
|
953
|
+
lastCommitAt?: string | null;
|
|
954
|
+
homepageUrl?: string | null;
|
|
955
|
+
isFork?: boolean;
|
|
956
|
+
isArchived?: boolean;
|
|
957
|
+
/** @description The curated project this repo is linked to, if any. */
|
|
958
|
+
project?: {
|
|
959
|
+
slug?: string;
|
|
960
|
+
name?: string | null;
|
|
961
|
+
} | null;
|
|
962
|
+
hackathonWinner?: boolean;
|
|
963
|
+
scfAwarded?: boolean;
|
|
964
|
+
builderReputation?: number;
|
|
965
|
+
judgeScore?: number | null;
|
|
966
|
+
judgedHackathon?: string | null;
|
|
967
|
+
/** @description Quality grade (0–100) = freshness + traction + hackathon/SCF/builder authority. Lead with high-score repos. */
|
|
968
|
+
repoScore: number;
|
|
969
|
+
repoScoreLabel?: string | null;
|
|
970
|
+
/** @description Keyword-relevance score for the current query (higher = better match). */
|
|
971
|
+
score?: number;
|
|
972
|
+
};
|
|
973
|
+
RepoSearchResponse: {
|
|
974
|
+
meta: components["schemas"]["Meta"];
|
|
975
|
+
repos: components["schemas"]["Repo"][];
|
|
976
|
+
};
|
|
771
977
|
FeedbackRequest: {
|
|
772
978
|
/** @enum {string} */
|
|
773
979
|
kind: "bug" | "missing-data" | "wrong-answer" | "suggestion" | "other";
|
|
@@ -813,12 +1019,15 @@ interface components {
|
|
|
813
1019
|
/** Re-exported component schemas for consumer convenience. */
|
|
814
1020
|
type Project = components["schemas"]["Project"];
|
|
815
1021
|
type ProjectSearchResponse = components["schemas"]["ProjectSearchResponse"];
|
|
1022
|
+
type Repo = components["schemas"]["Repo"];
|
|
1023
|
+
type RepoSearchResponse = components["schemas"]["RepoSearchResponse"];
|
|
816
1024
|
type StatusResponse = components["schemas"]["StatusResponse"];
|
|
817
1025
|
type HackathonsResponse = components["schemas"]["HackathonsResponse"];
|
|
818
1026
|
type HackathonDetailResponse = components["schemas"]["HackathonDetailResponse"];
|
|
819
1027
|
type FeedbackRequest = components["schemas"]["FeedbackRequest"];
|
|
820
1028
|
/** Query params, lifted from the generated paths for ergonomic call sites. */
|
|
821
1029
|
type SearchProjectsParams = NonNullable<paths["/api/projects/search"]["get"]["parameters"]["query"]>;
|
|
1030
|
+
type SearchReposParams = NonNullable<paths["/api/repos/search"]["get"]["parameters"]["query"]>;
|
|
822
1031
|
type GetHackathonsParams = NonNullable<paths["/api/hackathons"]["get"]["parameters"]["query"]>;
|
|
823
1032
|
type GetBuildersParams = NonNullable<paths["/api/builders"]["get"]["parameters"]["query"]>;
|
|
824
1033
|
type GetRfpsParams = NonNullable<paths["/api/rfps"]["get"]["parameters"]["query"]>;
|
|
@@ -854,6 +1063,12 @@ declare class ScoutClient {
|
|
|
854
1063
|
getStatus(): Promise<StatusResponse>;
|
|
855
1064
|
/** Search 741+ curated Stellar projects (prior art / competitor lookup). */
|
|
856
1065
|
searchProjects(params?: SearchProjectsParams): Promise<ProjectSearchResponse>;
|
|
1066
|
+
/**
|
|
1067
|
+
* Search ~1,900 indexed-and-scored Stellar GitHub repos by tech/keyword —
|
|
1068
|
+
* the code layer beneath the project directory. Ranked by repoScore
|
|
1069
|
+
* (freshness + traction + hackathon/SCF/builder authority).
|
|
1070
|
+
*/
|
|
1071
|
+
searchRepos(params?: SearchReposParams): Promise<RepoSearchResponse>;
|
|
857
1072
|
/** List Stellar hackathons (curated + DoraHacks merged feed). */
|
|
858
1073
|
getHackathons(params?: GetHackathonsParams): Promise<HackathonsResponse>;
|
|
859
1074
|
/** Full detail for one hackathon by slug. */
|
|
@@ -886,4 +1101,4 @@ declare class ScoutClient {
|
|
|
886
1101
|
private request;
|
|
887
1102
|
}
|
|
888
1103
|
|
|
889
|
-
export { type AnalyzeEcosystemParams, type FeedbackRequest, type GetBuildersParams, type GetClustersParams, type GetHackathonsParams, type GetLeaderboardParams, type GetRfpsParams, type HackathonDetailResponse, type HackathonsResponse, type ListSkillsParams, type Project, type ProjectSearchResponse, ScoutApiError, ScoutClient, type ScoutClientOptions, type SearchProjectsParams, type SearchResearchParams, type StatusResponse, type components, type paths };
|
|
1104
|
+
export { type AnalyzeEcosystemParams, type FeedbackRequest, type GetBuildersParams, type GetClustersParams, type GetHackathonsParams, type GetLeaderboardParams, type GetRfpsParams, type HackathonDetailResponse, type HackathonsResponse, type ListSkillsParams, type Project, type ProjectSearchResponse, type Repo, type RepoSearchResponse, ScoutApiError, ScoutClient, type ScoutClientOptions, type SearchProjectsParams, type SearchReposParams, type SearchResearchParams, type StatusResponse, type components, type paths };
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ var ScoutApiError = class extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
var DEFAULT_BASE_URL = "https://stellarlight.xyz";
|
|
16
|
-
var CLIENT_VERSION = "1.
|
|
16
|
+
var CLIENT_VERSION = "1.1.0";
|
|
17
17
|
var ScoutClient = class {
|
|
18
18
|
baseUrl;
|
|
19
19
|
timeoutMs;
|
|
@@ -36,6 +36,14 @@ var ScoutClient = class {
|
|
|
36
36
|
searchProjects(params = {}) {
|
|
37
37
|
return this.get("/api/projects/search", params);
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Search ~1,900 indexed-and-scored Stellar GitHub repos by tech/keyword —
|
|
41
|
+
* the code layer beneath the project directory. Ranked by repoScore
|
|
42
|
+
* (freshness + traction + hackathon/SCF/builder authority).
|
|
43
|
+
*/
|
|
44
|
+
searchRepos(params = {}) {
|
|
45
|
+
return this.get("/api/repos/search", params);
|
|
46
|
+
}
|
|
39
47
|
/** List Stellar hackathons (curated + DoraHacks merged feed). */
|
|
40
48
|
getHackathons(params = {}) {
|
|
41
49
|
return this.get("/api/hackathons", params);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stellar-light/api-client",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Typed TypeScript client for the Stellar Scout API — projects, builders, hackathons, SCF, audits, research. Zero dependencies, for autonomous agents and aggregators.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"stellar",
|