@foss.global/interfaces 0.12.0 → 0.13.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/changelog.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-05 - 0.13.0
4
+
5
+ ### Features
6
+
7
+ - add issue observation contract (forgeinventory)
8
+ - Add IForgeInventoryIssue for provider issue identity, repository-local numbers, metadata, author identity and timestamps.
9
+ - Document issue inventory semantics and add type-level round-trip contract coverage.
10
+
3
11
  ## 2026-09-04 - 0.12.0
4
12
 
5
13
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@foss.global/interfaces',
6
- version: '0.12.0',
6
+ version: '0.13.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the foss.global Git platform ecosystem.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFHQUFxRztDQUNuSCxDQUFBIn0=
@@ -79,6 +79,30 @@ export interface IForgeInventoryRepository {
79
79
  /** Git storage bytes only; never an admission estimate for an outgoing push. */
80
80
  gitSizeBytes: TForgeInventoryQuantity;
81
81
  }
82
+ /** Issue metadata observed from a provider, never a complete historical import payload. */
83
+ export interface IForgeInventoryIssue {
84
+ /** Provider row identity; an issue's displayed number is a separate locator. */
85
+ identity: TForgeInventoryIdentity;
86
+ repository: TForgeInventoryIdentity;
87
+ location: IForgeInventoryLocation;
88
+ /** Canonical positive decimal repository-local number (GitLab iid). */
89
+ number: string;
90
+ title: string;
91
+ /** Provider text verbatim, including empty text; null means not exposed. */
92
+ body: string | null;
93
+ state: 'open' | 'closed' | null;
94
+ /** Provider issue classification, such as GitLab issue/incident/task; null if unknown. */
95
+ providerType: string | null;
96
+ /** null means unknown or unsupported, never implicit public visibility. */
97
+ confidential: boolean | null;
98
+ /** Reported provider author identity; does not establish an imported original author. */
99
+ author: TForgeInventoryIdentity;
100
+ /** ISO 8601 provider content times, distinct from inventory observation times. */
101
+ createdAt: string | null;
102
+ updatedAt: string | null;
103
+ /** null means no observed close time; state determines whether the issue is open. */
104
+ closedAt: string | null;
105
+ }
82
106
  export type TForgeInventoryEntityClass = 'namespaces' | 'users' | 'teams' | 'memberships' | 'repositories' | 'gitRefs' | 'gitObjects' | 'protectedRefs' | 'publicSshKeys' | 'deployKeys' | 'issues' | 'issueComments' | 'pullRequests' | 'reviews' | 'reviewComments' | 'labels' | 'milestones' | 'assignees' | 'reactions' | 'releases' | 'releaseAssets' | 'lfsObjects' | 'packages' | 'packageVersions' | 'packageBlobs' | 'webhooks' | 'webhookDeliveries' | 'ciWorkflows' | 'ciRuns' | 'ciArtifacts' | 'wikis' | 'projects';
83
107
  /** Availability of an inventory read, never a claim of write/import fidelity. */
84
108
  export type TForgeInventoryCapability = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foss.global/interfaces",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "private": false,
5
5
  "description": "Shared TypeScript interfaces and TypedRequest contracts for the foss.global Git platform ecosystem.",
6
6
  "exports": {
package/readme.md CHANGED
@@ -98,7 +98,7 @@ Protocol v1 describes OCI execution with Docker or Podman and `tar.gz` source ar
98
98
  ### Forge inventory contracts
99
99
 
100
100
  `IForgeInventoryReport`, `IForgeInventoryPage<TItem>`, `IForgeInventoryNamespace`,
101
- and `IForgeInventoryRepository` describe operator inventory observations. They
101
+ `IForgeInventoryRepository` and `IForgeInventoryIssue` describe operator inventory observations. They
102
102
  are exported from both the package root and `data`. This package supplies types;
103
103
  it does not scan a forge or validate network responses.
104
104
 
@@ -108,6 +108,15 @@ subgroups and literal hyphens. A source without a stable identifier reports an
108
108
  unresolved identity. URLs must be credential-free, and inventory responses need
109
109
  operator authorization rather than anonymous public exposure.
110
110
 
111
+ Issue observations separate the provider row ID from its repository-local
112
+ `number` (GitLab `iid`) and retain the repository identity. They preserve empty
113
+ body text, unknown metadata, open/closed state, provider issue classification,
114
+ confidentiality, reported author identity and provider content timestamps.
115
+ The reported author does not prove original attribution for previously imported
116
+ issues. Comments, labels, milestones, assignees, attachments and history require
117
+ their own inventory and preservation work; this metadata DTO does not claim
118
+ that those collections or external writes are implemented.
119
+
111
120
  Every canonical entity class has an explicit capability and collection result,
112
121
  including classes not inspected or unavailable. Additional provider features
113
122
  have their own entries. `enumerated` means the selected collection was exhausted
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@foss.global/interfaces',
6
- version: '0.12.0',
6
+ version: '0.13.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the foss.global Git platform ecosystem.'
8
8
  }
@@ -81,6 +81,31 @@ export interface IForgeInventoryRepository {
81
81
  gitSizeBytes: TForgeInventoryQuantity;
82
82
  }
83
83
 
84
+ /** Issue metadata observed from a provider, never a complete historical import payload. */
85
+ export interface IForgeInventoryIssue {
86
+ /** Provider row identity; an issue's displayed number is a separate locator. */
87
+ identity: TForgeInventoryIdentity;
88
+ repository: TForgeInventoryIdentity;
89
+ location: IForgeInventoryLocation;
90
+ /** Canonical positive decimal repository-local number (GitLab iid). */
91
+ number: string;
92
+ title: string;
93
+ /** Provider text verbatim, including empty text; null means not exposed. */
94
+ body: string | null;
95
+ state: 'open' | 'closed' | null;
96
+ /** Provider issue classification, such as GitLab issue/incident/task; null if unknown. */
97
+ providerType: string | null;
98
+ /** null means unknown or unsupported, never implicit public visibility. */
99
+ confidential: boolean | null;
100
+ /** Reported provider author identity; does not establish an imported original author. */
101
+ author: TForgeInventoryIdentity;
102
+ /** ISO 8601 provider content times, distinct from inventory observation times. */
103
+ createdAt: string | null;
104
+ updatedAt: string | null;
105
+ /** null means no observed close time; state determines whether the issue is open. */
106
+ closedAt: string | null;
107
+ }
108
+
84
109
  export type TForgeInventoryEntityClass =
85
110
  | 'namespaces'
86
111
  | 'users'